Mini-FAQ по Perl (Частые вопросы, ЧаВо)
Меня часто спрашивают, как я учил Perl — какие книги читал, какие сайты посещал и так далее. Многие считают, что Perl имеет сложный синтаксис, и потому не хотят или бояться его учить. В этом FAQ я хотел бы поделиться своим мнением относительно языка Perl.
Я слышал, что Perl — устаревший язык и сейчас на нем никто не пишет. Так ли это?
Нет, не так. Perl используется системными администраторами (или просто продвинутыми пользователями) для автоматизации рутинной работы. Perl используется для создания веб-сайтов. Также на нем создаются обычные приложения, как и на любом другом языке программирования.
Относительно возраста языка — Perl был создан в 1986 году и с тех пор активно развивался и изменялся. В настоящее время Perl поддерживает модульное и объектно-ориентированное программирование, регулярные выражения и т.д. — в общем, идет в ногу со временем.
Объявления о имеющейся вакансии Perl-программиста появляются с большой частотой, при этом уровень заработной платы, как правило, ощутимо выше, чем у программистов на Си или Java. Впрочем, к моменту, когда вы будете читать эти строки, ситуация могла и измениться, так что лучше проведите собственное исследование в этом направлении, посетив, к примеру, rabota.ru.
- Программы, написанные на Perl (как и в случае с любым другим скриптовым языком), одинаково хорошо работают под разными операционными системами.
- Зачастую то, что на другом языке программирования (например, PHP) занимает десять строк кода может быть написано на Perl в одну строчку.
- Если перед вами стоит какая-то задача, загляните в CPAN. Скорее всего, кто-то уже решил ее. Вам остается лишь скачать модуль и прочитать документацию к нему.
Я слышал, что синтаксис Perl неописуемо сложен. Так ли это?
Синтаксис Perl очень похож на синтаксис Java или PHP. Те же циклы, те же условные операторы и фигурные скобочки. Репутацию языка со сложным синтаксисом Perl совершенно незаслуженно получил за имеющиеся в нем операторы, которые, как уже отмечалось, позволяют писать более короткий код. Скажем, вы можете объявить массив слов так:
my @arr = («aaa», «bbb», «ccc»);
или более простым способом — без запятых и кавычек:
my @arr = qw/aaa bbb ccc/;
Если вас интересуют конкретные примеры, в которых код на Perl оказывается короче, чем на каком-нибудь PHP, я позволю себе отослать вас к моему блогу, а точнее — к записи Интересные примеры на Perl. Особое внимание обратите на операторы grep и sort, подумайте, сколько кода занял бы аналогичный код на PHP.
С чего начать изучение Perl?
Лично я учился на примерах. Вообще считаю этот способ самым простым и понятным. Вы можете без труда найти их в Google или в уже упомянутом моем блоге — в нем я часто выкладываю скрипты с комментариями.
Тем не менее могу порекомендовать несколько хороших книг — это «Изучаем Perl» и «Perl: изучаем глубже», авторы — Шварц Р. и Феникс Т. Недавно эти книги были переизданы, так что в них вы найдете самый легкую для усвоения и актуальную информацию о программировании на Perl. Настоятельно не рекомендую брать какие-либо другие книги, поскольку написанное в них зачастую уже давно потеряло актуальность (если книжка, скажем 2006-го года — помните, что Perl активно развивается) или в ней написано 1000 страниц ни о чем.
Если у вас возникнут вопросы относительно программирования на Perl, вы можете попросить совета на программерских форумах (например, vingrad.ru) или в жж-сообществе ru_perl.
Я не хочу устанавливать UNIX только ради этого вашего Perl!
И не надо — Perl портирован под Windows. Соответствующий проект называется ActivePerl. Просто скачайте и установите ActivePerl с http://www.activestate.com/activeperl/ и пользуйтесь на здоровье. Никаких кряков и кейгенов искать не нужно — программа бесплатная.
Уж больно все хорошо и замечательно. А как же ложка дегтя?
Да, пожалуй она имеется, и даже не одна.
Во-первых, в любом языке работает так называемый закон «водяного матраца». Если вкратце, он означает что язык может быть либо простым в изучении, но программы на нем будут состоять из большого числа строк (как в случае с PHP), либо сложным в изучении, но позволяющем писать меньше кода (это как раз наш случай).
Во-вторых, Perl подходит не для всяких задач. Если от вас требуется написать программу, которая должна работать быстро (графический редактор, 3D игру), Perl вам не подойдет. Как и любой другой скриптовый язык. Аналогично я не стал бы писать на Perl драйверы.
В-третьих, хоть Perl на мой взгляд и не сложен в изучении, но оно, это самое изучение, занимает больше времени, чем в случае с другим языком. Для сравнения, PHP я освоил буквально за пару ночей — переменные, циклы, классы — тут знать то нечего. Начать писать на Perl можно за тот же промежуток времени, но чтобы хорошо в нем разобраться, мне лично потребовалось несколько месяцев.
А минус за ненависть к PHP не желаете?
PHP имеет свои преимущества, многие из которых вытекают из простоты его синтаксиса. Простой синтаксис, значит прост в изучении. Прост в изучении, значит больше комьюнити.
Не стоит недооценивать PHP, ведь благодаря ему появились такие мощные CMS, как Drupal и Joomla. Аналогичных проектов на Perl мне не известно, если не считать аналога WordPress — Movable Type. Последний, к слову, пользуется большой популярностью за рубежом.
Perl — особенный язык программирования
Есть такой язык программирования — Perl. Если вы заинтересовались информационными технологиями в эпоху Python и JavaScript, вы, вероятно, даже не знаете, что он существует — а он есть и его много. Если представить, что наши ИТ-проекты — это красивые квартиры с евроремонтом, то Perl можно представить как старые магистральные трубы, по которым вода приходит в квартиру.
Ещё Perl называют «скотчем для интернета», потому что он может соединять какие угодно проекты, написанные на любых языках:
- веб-сервер и базы данных,
- интернет-магазины и службы почтовых рассылок,
- термодатчики и систему управления шлюзами в гидроэлектростанции,
- платную подписку на сайте и смс-оповещения,
- систему видеонаблюдения и городскую службу быстрого реагирования.
Perl хорошо умеет запускать системные команды в операционной системе. Благодаря этому Perl может взять результат работы одной программы, преобразовать их как нужно и отдать в другую.
✅ Суперсила Perl — в работе с регулярными выражениями, полная поддержка которых уже встроена в язык. Perl может взять любые данные, обработать их по нужным правилам и очень быстро выдать результат в удобном для пользователя виде.
❌ Слабое место Perl — его сложность для новичков, если выбрать его своим первым языком для изучения. В нём всё не так просто с ООП, слишком вольная трактовка операторов сравнения и огромные комбинации спецсимволов, в которых сложно разобраться на старте. Поэтому Perl лучше не выбирать как первый язык, а вернуться к нему, когда возникнет практическая необходимость.
Если у вас MacOS или Linux — у вас уже есть Perl
Интерпретатор Perl встроен почти во все UNIX-подобные операционные системы, поэтому его можно использовать в любой момент без установки. Единственное, что нужно проверить — что в системных настройках правильно указан путь к интерпретатору.
Запустить код на Perl в UNIX-среде просто: достаточно в командной строке написать perl или perl .
Если у вас Windows, то всё сложнее — нужно будет использовать отдельный интерпретатор, написанный специально для вашей версии Windows. Дополнительный минус — так как это не родная среда для Perl, часть команд в таком режиме совместимости работать не будет.
Синтаксис
Синтаксис Perl похож одновременно на два языка:
- C, откуда он взял оператор присваивания, точку с запятой, часть типов данных, общую структуру команд и гибкость при использовании переменных;
- Bourne Shell — стандартная оболочка для работы с командной строкой в UNIX-системах — Perl взял оттуда способ построения цепочек команд и передачу параметров от одного оператора другому.
Переменные. Начинаются со специальных символов:
$ — число, строка или ссылка на что-то
$thecode = «Привет, это журнал Код!»
@ — массив из $-переменных
@arr = («aaa», 123, $thecode, $x+$y);
& — функция (в Perl это тоже переменная), которая получает аргументы и возвращает значение
Условный оператор. Почти такой же как в C:
$a = shift;
if($a > 10) print «a > 10\n»;
>
Ещё есть unless — то же самое, что ЕСЛИ, только наоборот:
unless($a == 0) # «выполняется, только если a не равно нулю»
>
Циклы. То же самое, как и везде:
# вывести строку ‘0 1 2 3 4’
for($i = 0; $i < 5; $i++) print «$i «;
>
Или можно сделать как в PHP:
@arr = (0, 1, 2, 3, 4);
# вывести строку ‘0 1 2 3 4’
foreach $i (@arr) print «$i «;
>
Циклы с пред- и постусловием. Если вы знаете хотя бы Pascal, то вы знаете и циклы на Perl:
# выводим '1 2 3 4 5' четырьмя разными способами $i = 0; while($i < 5) < # пока $i меньше пяти print ++$i." "; >print "\n"; # новая строка $i = 0; until($i == 5) < # пока $i не станет равно пяти print ++$i." "; >print "\n"; $i = 0; do < print ++$i." "; >while ($i < 5); # проверка в конце цикла print "\n"; $i = 0; do < print ++$i." "; >until ($i == 5); print "\n";
Операторы присваивания и математические операторы. В этом плане Perl очень похож на любой C-подобный язык и использует те же самые команды:
#!/usr/bin/perl $a = 123; $b = -7.496; $c = 0xABC; # можно записывать переменные и в шестнадцатеричной форме $d = ($a + $b) / $c; $d *= $a; # тоже самое, что $d = $d * $a; $str1 = "hello"; $str2 = "$str1, world"; # в $str2 будет записано 'hello, world $str3 = $a."\n".$str2; $str4 = '$str1'; # в $str4 будет записано '$str1', а не 'hello', потому что кавычки
Применение на практике
Perl — мощный язык для работы с текстом и любыми символьными данными. На нём легко писать программы, которые автоматизируют работу с компьютером, выполняют рутинные операции или преобразуют одни данные в другие.
Например, эта команда
perl -i.bak -p -e «s/\bJava\b/Perl/» resume.txt
заменит все упоминания слова Java на слово Perl в файле resume.txt, и одновременно сделает резервную копию оригинального файла.
А эта — удаляет все повторяющиеся элементы массива:
my %cnt; # здесь будет число повторений элементов
@links = grep < ! $cnt++; > @links;
Если нужно очистить файл от всех HTML-команд, можно использовать такой код:
use strict;
use utf8;
use HTML::Entities;
# исходим из того, что мы уже получили содержимое HTML-файла и можем с ним работать
utf8::decode($_);
s/<[^>]*>//g;
decode_entities($_);
utf8::encode($_);
Иногда это всё-таки сложно
Иногда готовый код на Perl сложно понять и прочитать. Это из-за того, что Perl — очень гибкий язык программирования с полной поддержкой регулярных выражений. Чтобы понять, что делают некоторые программы и функции, недостаточно просто посмотреть на них — нужно понимать правила преобразования регулярных выражений и знать, как одни команды в регулярках влияют на другие.
Самый популярный пример такого кода:
❌❌❌ Не запускайте этот код на своём компьютере, мы предупредили.
Кажется, что на экране должно появиться несколько раз слово test, а дальше perl обрабатывает набор каких-то бессмысленных символов. Но на самом деле после выполнения и обработки всех регулярных выражений этот код превращается в такой:
❌❌❌ И этот код тоже не запускайте — можно легко стереть все свои данные и повредить файловую систему.
Не все программы на Perl выглядят как эта, но без понимания того, как работают регулярные выражения, понять код бывает очень сложно.
Вывод: регулярные выражения — это сила. Убедились в этом в очередной раз. Если ещё не убедились — почитайте, как с их помощью можно настроить автозамену нецензурной лексики на благопристойные выражения.
Что пишут на Perl
Если коротко: всё, где нужно автоматизировать работу компьютера или преобразование данных, можно написать на Perl.
Системное программирование. Сюда можно отнести работу с учётными записями пользователей в сетях любой сложности и конфигурации, администрирование сетей и пользователей в организации. Ещё Perl используют для автоматизации рутины — наладить резервное копирование по расписанию, отправку писем с ежедневными отчётами, сбор, обработку и анализ разных данных.
CGI-скрипты — любые скрипты для обмена данными между сервером и клиентом. Для Perl неважно, в каком виде данные выходят и поступают обратно, — он переведёт их в нужный вид и отправит из одного сервиса в другой.
Объединение сервисов или программ. Если у вас есть две программы, одна из которых выдаёт готовый результат в одном формате, а другой он требуется в другом формате, то Perl поможет вам их соединить. Работает это так: вы пишете скрипт, который запускает первую программу, получает оттуда данные, преобразует их в нужный вид и отправляет во вторую программу. В итоге всё это работает как одно целое.
Востребован ли Perl сейчас
Perl востребован, потому что в мире накопилось много старого кода, который нужно поддерживать. Дело в том, что программы на Perl работают стабильно, предсказуемо и без сбоёв, а с 1987 года их написано очень много.
Но порог входа в этот язык довольно высок — нужно обладать навыками хотя бы на уровне мидла, чтобы быть востребованным специалистом.
С чего начать
Почитать: учебник по Perl для новичков. Перевод иногда хромает, но это лучший вариант для тех, кто только начинает изучение языка.
Если знаете английский — начните с официальной страницы языка.
Посмотреть: Perl Tutorial или Great Perl Tutorial For Begginers. Тут уже всё на английском, зато более наглядно.
Бумажная книга: Изучаем Perl Рэндала Шварца и Тома Феникса. Для тех, кто любит основательно подойти к процессу и не любит читать с экрана.
Краткий экскурс в Perl-программирование
Эту строку желательно использовать как под Linux, так и под Windows (вдруг скрипт придётся на сервер заливать). Без данной строки программа не будет выполняться.
В структуру Perl`а входят: переменные, операторы, специальные символы. Все переменные начинаются с символа «$» — как символьные так и числовые. Задаются переменные следующим образом:
$a=10; # Числовая переменная $b="simvol"; # Символьная переменная
Как численные, так и символьные переменные являются скалярными переменными. Рассмотрим действия, которые можно производить над скалярами:
print 2*7+4/(8%3); print int(127/15); #Целая часть
print 2**16;
$i++; # Увеличить переменную $i на 1
$x=3; $y=4; print $x|$y; print $x&$y;
if ($x==9)
if ($test eq ‘ok’)
if (($test eq ‘ok’) || ($x==9)
$x=10,$y=20;
$url='http://'.'rambler.ru';
print '1234'x3; # Получится '123412341234'
if ($url=~/http/)
$x+=$y; # Прибавит к переменной $x переменную $y
Стоит отметить разницу между апострофами и кавычками, использующихся в присваивании. В кавычках осуществляется подстановка переменных и спец. символов, а в апострофах нет. Чтобы игнорировать подстановку в кавычках, следует перед спец. символом поставить слеш ( \ ).
$x='perem1'; print 'Var = $x'; или print "Var = \$x"; # Выведет 'Var = $x' print "Var = $x"; # Выведет 'Var = perem1'
Массивы
@array1=(1,2,3,4,5); @array2=(30,40,@array1); # Добавление к @array2 всех элементов @array1 @array3=($perem1,$perem2,$perem3);
Обращение к элементам массива осуществляется так:
@array1=(1..20); @array1[2,10,20]=(20,3,4); # Замена элементов под номерами 2 10 и 20 числами 20 3 и 4 @array1[20,1]=@array1[1,20] # Меняет элементы местами
Обращаться к отдельному элементу массива (скаляру) можно в форме $имя_массива[индекс].
Для массивов существуют также такие функции как push(), pop(), shift(), unshift().
push(@array1,$perem1); # Добавляет $perem1 в конец @array unshift(@array,$perem1); # Добавляет $perem1 в начало @array $perem1=pop(@array1); # Присваивает $perem1 последнему элементу массива @array $perem1=shift(@array); # Тоже самое с первым элементом
Не Python, но тоже хорош: что такое Perl и почему его можно изучать новичкам

Сегодня мы вкратце рассмотрим такой язык программирования как Perl. Какие у него есть преимущества и недостатки, какой у него синтаксис и что он умеет.
Детям из Мариуполя нужно 120 ноутбуков для обучения — подари старое «железо», пусть оно работает на будущее Украины

История появления и для чего используется

Язык программирования Perl — это очень старый язык программирования, который разработал еще в конце 1980-х годов американский программист Ларри Уолл.
По специальности Ларри лингвист и даже в какое-то время вместе со своей женой занимался переводом Библии. Возможно, именно поэтому при разработке языка программист выдумал две «заповеди», определяющие его философию:
- первая звучит как «Есть несколько способов сделать это»;
- а вторая — «Легкие вещи должны быть легкими, а сложные должны быть возможными».
Це хороший спосіб розвитку вашої кар’єри в IT-індустрії. Після проходження курсу Mate гарантує вам офер мрії.
Изначально Perl позиционировался как альтернатива для AWK — сценарного языка построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам.
Свое название язык получил как аббревиатура от четырех слов: Practical Extraction and Reporting Language. Это отсылка как раз к первоначальному назначению языка, которое заключалось в облегчении процесса извлечения и отчетности данных из текстовых файлов.
Но с течением времени Perl стал языком общего назначения, который используется для различных задач программирования, включая веб-разработку, системное администрирование, научные вычисления и многое другое. На сегодня на базе языка Perl были реализованы такие проекты, как Yahoo, Amazon и миллионы других продуктов.
Так как сокращение на английском языке звучит похоже на «жемчужина», то и логотип изначально тоже хотели выбрать соответствующий. Но оказалось, что язык программирования с таким названием и символикой уже есть. Поэтому вместо жемчужины в качестве эмблемы сейчас используется верблюд. Он олицетворяет выносливость и способность решать сложные задачи.

Для программирования на Perl нужно установить интерпретатор Perl на свой компьютер. Скачать его можно с официального сайта проекта.
Perl доступен для скачивания и установки на многих платформах, включая Windows, macOS и Linux. Большинство UNIX-систем, включая macOS, поставляются с установленной версией Perl, и многие системные инструменты и скрипты, написанные для UNIX-систем, используют Perl.
Синтаксис
Perl взял много синтаксических конструкций из языка C, например, использование фигурных скобок для обозначения блоков кода и точки с запятой в качестве символа завершения оператора.
Кроме того, Perl дублирует многие возможности языка AWK для обработки текстовых данных, включая регулярные выражения и операторы для обработки строк. Также можно увидеть определенное сходство с языком командной строки Unix Shell, например, возможность запуска внешних команд и использование переменных среды.
Курс UI/UX для геймдеву.
Під час навчання ви розробите проекти для портфоліо, що складається з 5 ключових аспектів UX/UI-дизайну, та отримаєш необхідні навички для професійного росту.
Чтобы убедиться в сходстве с языком С, достаточно взглянуть на два фрагмента кода. Первый написан на Perl:
#!/usr/bin/perl $cars = ["Toyota", "Honda", "Ford", "Chevrolet"]; $car_colors = ["red", "blue", "green", "silver"]; for my $i (0 .. $#) < print "$cars->[$i] is $car_colors->[$i]\n"; >
Второй код на С:
#include int main() < char *cars[] = ; char *car_colors[] = ; int i; for (i = 0; i < 4; i++) < printf("%s is %s\n", cars[i], car_colors[i]); >return 0; >
Результат вывода на экран будет одним и тем же в обоих случаях:
Toyota is red Honda is blue Ford is green Chevrolet is silver
Оба кода создают массивы cars и car_colors , которые содержат названия автомобилей и их цвета. Затем, с помощью циклов, каждый элемент массива выводится на экран, включая соответствующий ему цвет.
Коды на Perl и С используют похожие синтаксические конструкции, включая использование массивов, циклов и операторов индексации. Но Perl поддерживает более широкий спектр функций высшего уровня и упрощенный синтаксис для работы с строками и регулярными выражениями.
Переменные
Perl относится к динамическим языкам программирования, то есть он не требует явной типизации переменных во время объявления.
В Perl тип переменной определяется автоматически во время выполнения программы, в зависимости от значения, которое ей присваивается.
Это означает, что переменная может содержать значение любого типа данных (число, строка, массив, хэш, ссылка и т.д.), и ее тип может изменяться во время выполнения программы.
Хотя Perl не требует явной типизации переменных, он позволяет использовать прототипирование функций. С его помощью можно задать типы аргументов, передаваемых в функцию, и ее возвращаемый тип. При это м использование прототипирования не обязательно и не влияет на динамическую природу языка.
Переменные в Perl начинаются с символа $ . Например, строчка $name = «Highload»; объявляет переменную $name со значением “Highload “.
Курс Python.
Цю мову програмування використовують від базових концепцій до складних застосувань у сферах штучного інтелекту. Після проходження курсу гарантовано отримай роботу в ІТ.
В Perl переменные могут содержать значения разных типов и тип переменной может меняться в процессе выполнения программы:
my $x = 10; $x = "hello";
Используя символы $ или @ , переменные можно вставить внутрь строк:
my $name = "Highload"; print "Hello, $name!\n";
Условные операторы
Perl поддерживает стандартные условные операторы, такие как if , elsif и else :
if ($age < 18) < print "You are underage\n"; >elsif ($age < 21) < print "You are not allowed to drink alcohol in the US\n"; >else
Циклы
Perl поддерживает циклы for , foreach , while , do-while и until . Пример использования цикла for :
for (my $i = 0; $i
Регулярные выражения
Регулярные выражения — это сильная сторона языка. Благодаря им Perl известен своими возможностями обработки текста. Например, выражение /hello/ соответствует строке “ hello “.
У пользователей Perl есть возможность реализовывать любые сложные шаблоны для поиска, замены и манипуляции строками. Для этого можно использовать оператор соответствия =~ и шаблон регулярного выражения, заключенный в слеши / :
my $str = «The highload today»; if ($str =~ /today/)
В этом коде строка “The highload today” проверяется на наличие слова “today” с помощью регулярного выражения /today/ .
В Perl регулярные выражения могут использоваться и для более сложных сопоставлений, например:
- использование квантификаторов;
- группировка;
- альтернатива.
В примере ниже стро ка “The quick brown fox jumps over the lazy dog” проверяется на наличие фразы “quick brown fox”, “quick brown dog”, “slow red fox” или “slow red dog” с помощью одного регулярного выражения — (quick|slow) (brown|red) (fox|dog) :
my $str = «The quick brown fox jumps over the lazy dog»; if ($str =~ /(quick|slow) (brown|red) (fox|dog)/)

Также можно использовать квантификаторы специальные символы в регулярных выражениях, которые указывают, сколько раз должен встретиться предыдущий символ или группа символов . Например, символы + , пробел или ? для указания количества вхождений:
- квантификатор + указывает на одно или более вхождений;
- пробел указывает на ноль или более вхождений;
- а квантификатор ? указывает на ноль или одно вхождение.
В Perl также доступны и другие операции, такие как просмотр вперед и назад, отрицание, операции с подстроками и многое другое. Все это делает регулярные выражения в Perl мощным инструментом для работы с текстом.
Используя оператор замены =~ s// для замены текста, можно, например, обработать фрагмент, заменив одно слово в строке другим.
В коде ни же слово “yesterday” меняется на слово “today” в строке “The highload yesterday is the best source of knowledge”:
my $str = "The highload yesterday is the best source of knowledge"; $str =~ s/yesterday/today/; print "$str\n"; # "The highload today is the best source of knowledge" >
Структуры данных
Perl может работать с массивами, хэшами и списками. Код ниже создает массив @numbers , содержащий числа от 1 до 5 , и хэш %colors , содержащий пары ключ-значение, где ключи — это строки, а значения — шестнадцатеричные коды цветов:
my @numbers = (1, 2, 3, 4, 5); my %colors = ( red => '#ff0000', green => '#00ff00', blue => '#0000ff', );
Переменная @numbers содержит список чисел, заключенных в круглые скобки и разделенных запятыми. Чтобы получить доступ к элементам массива, можно использовать индексацию с помощью квадратных скобок. Например, $numbers[0] содержит значение 1 , а $numbers[4] — значение 5 .
Хэш %colors содержит пары ключ-значение, разделенные символом => . Ключи в хэше могут быть любого типа, но в этом случае используются строки. Значения хранятся в соответствующих ключам ячейках и могут быть извлечены по ключу с помощью оператора фигурных скобок. Например, $colors содержит значение #ff0000 .
Функции
Язык программирования Perl умеет работать с функциями.
В примере ниже — объявление пользовательской функции greet , которая принимает один аргумент $name . Внутри функции происходит вывод приветствия на экран, в которое вставляется значение аргумента $name . Далее вызывается функция greet с аргументом Visitor , что приведет к вывод у “Hello, Visitor!” на экран:
sub greet < my ($name) = @_; print "Hello, $name!\n"; >greet("Visitor");
ООП
Perl — это объектно-ориентированный язык, то есть он дает возможность работать с классами, объектами и использовать наследование.
Вот пример работы с классами в Perl:
package Person; sub new < my $class = shift; my $self = < name =>shift, age => shift, >; bless $self, $class; return $self; > sub get_name < my $self = shift; return $self->; > sub get_age < my $self = shift; return $self->; > 1; # В Perl модуль должен возвращать истинное значение.
Этот код описывает класс Person , реализованный в Perl. У класса есть конструктор new , который создает новый объект класса Person и инициализирует его свойства name и age значениями, переданными в качестве аргументов конструктора.
Методы get_name и get_age позволяют получить значение свойств объекта.
В конце файла есть строка 1 . Она указывает на то, что модуль был успешно загружен и должен возвращать истинное значение. Этот код может быть использован в других частях программы для создания объектов типа Person и получения их свойств:
use Person; my $person = Person->new("Bondarenko", 44); print "Name: " . $person->get_name() . "\n"; print "Age: " . $person->get_age() . "\n";
Код создаст новый объект Person с именем Bondarenko и возрастом 44 , и выведет его свойства на экран.
Однострочники
Одна из особенностей Perl — возможность создания «программ из одной строки».
Однострочники — это короткие скрипты на языке Perl, которые выполняются в терминале операционной системы.
Они часто используются для выполнения простых задач, таких как обработка текста, поиска и замены в файлах и т.д.
Однострочники в Perl могут запускаться из командной строки, без необходимости создавать и сохранять скрипт в файле. Например, однострочник в Perl для вывода всех строк из файла file.txt, содержащих слово “example”:
perl -ne ‘print if /example/’ file.txt
В этом примере команда perl запускает однострочник, который читает файл file.txt построчно ( -ne ) и выводит только те строки, которые содержат слово “example”.
Расширения Perl
Стандартные возможности языка могут быть расширены при помощи сторонних модулей. Среди дополнений Perl можно выделить наиболее популярные расширения:

- DBI. Модуль для доступа к различным базам данных, включая MySQL, PostgreSQL, Oracle и SQLite.
- Catalyst. Веб-фреймворк для разработки веб-приложений Perl.
- Moose. Объектно-ориентированный фреймворк для Perl.
- DateTime. Модуль для работы с датами и временем в Perl.
- CGI. Модуль для создания веб-приложений Perl.
- LWP. Модуль для доступа к веб-ресурсам из Perl, включая работу с HTTP, HTTPS и FTP.
- MooseX::Declare. Модуль, который добавляет декларативные возможности в Moose Расширения для Perl 5, позволяющее упростить реализацию ООП. .
- BioPerl. Набор модулей для работы с биологическими данными в Perl.
- Template Toolkit. Мощный движок шаблонов для Perl.
- Test::More. Модуль для модульного тестирования Perl-кода.
Эти и другие модули могут быть установлены из репозитория дополнений. Наиболее популярный репозиторий дополнений Perl — CPAN (Comprehensive Perl Archive Network). Это официальный репозиторий Perl, содержащий более 200 тысяч модулей Perl, которые могут быть установлены и использованы в Perl-проектах.
CPAN — также главный источник документации и примеров кода на Perl. CPAN был создан в 1995 году и на протяжении более чем 25 лет продолжает быть главным ресурсом для Perl-разработчиков.
Репозиторий предлагает удобный способ установки модулей Perl, используя менеджеры модулей Perl — CPAN.pm или cpanminus (cpanm). Эти менеджеры модулей автоматически загружают, устанавливают и обновляют модули Perl из CPAN.
Преимущества и недостатки Perl
Perl очень гибкий и простой, а его синтаксические конструкции понятны даже начинающему программисту, поэтому порог вхождения — низкий.
Но в последние годы Perl все больше уступает своим конкурентам: Python, Ruby и Java. Все потому, что у Perl нет такого уровня безопасности, как у них, и он может быть уязвим к атакам.
Кроме того, у Python и Java более разнообразная стандартная библиотека, а у Perl — более узкоспециализированные модули. Но это может быть как преимуществом, так и недостатком, в зависимости от проекта.
Еще одна ахиллесова пята этого языка — проблемы с многопоточностью, которые могут снижать производительность при обработке больших объемов данных. Это связано с тем, что Perl использует модель потоков с блокировками для синхронизации между потоками.
Для улучшения производительности многопоточной обработки в Perl можно воспользоваться такими модулями как Thread::Queue или Thread::Pool.
Кроме того, у Perl есть множество других инструментов и модулей, которые могут быть использованы для оптимизации производительности, например, модули для параллельной обработки данных, оптимизации работы с памятью и т.д.
Другой недостаток языка — ограниченная поддержка Unicode, что может привести к проблемам при работе с многими языками и символами.
Заключение
Несмотря на уязвимости в плане безопасности, Perl достаточно удобный для работы, особенно как инструмент для системного администрирования — управления и конфигурирования систем, настройки сети, управления пользователями и группами, службами и т.д.
Perl можно использовать для автоматизации различных задач, таких как резервное копирование файлов, управление базами данных, автоматический сбор данных из Интернета, Также с его помощью можно проводить обработку информации в формате CSV и XML.
Кроме того, он хорошо подходит для решения научных и математических задач, например, для статистического анализа и моделирования.
Если вы решите изучить Perl, мы рекомендуем вам посмотреть трехчасовой курс по основам этого языка:
Курс Микросервисная архитектура.
програма, яка допоможе опанувати головні принципи розробки мікросервісної архітектури, щоби ви могли проєктувати незалежні сервіси, а потім інтегрувати їх в одну систему. Практики буде багато.