Perl — особенный язык программирования

Perl — особенный язык программирования

Он может связать два любых проекта в одно целое.

Есть такой язык программирования — Perl. Если вы заинтересовались информационными технологиями в эпоху Python и JavaScript, вы, вероятно, даже не знаете, что он существует — а он есть и его много. Если представить, что наши ИТ-проекты — это красивые квартиры с евроремонтом, то Perl можно представить как старые магистральные трубы, по которым вода приходит в квартиру. 

Ещё Perl называют «скотчем для интернета», потому что он может соединять какие угодно проекты, написанные на любых языках:

  • веб-сервер и базы данных,
  • интернет-магазины и службы почтовых рассылок,
  • термодатчики и систему управления шлюзами в гидроэлектростанции,
  • платную подписку на сайте и смс-оповещения,
  • систему видеонаблюдения и городскую службу быстрого реагирования.

Perl хорошо умеет запускать системные команды в операционной системе. Благодаря этому Perl может взять результат работы одной программы, преобразовать их как нужно и отдать в другую.

✅ Суперсила Perl — в работе с регулярными выражениями, полная поддержка которых уже встроена в язык. Perl может взять любые данные, обработать их по нужным правилам и очень быстро выдать результат в удобном для пользователя виде. 

❌ Слабое место Perl — его сложность для новичков, если выбрать его своим первым языком для изучения. В нём всё не так просто с ООП, слишком вольная трактовка операторов сравнения и огромные комбинации спецсимволов, в которых сложно разобраться на старте. Поэтому Perl лучше не выбирать как первый язык, а вернуться к нему, когда возникнет практическая необходимость.

Если у вас MacOS или Linux — у вас уже есть Perl

Интерпретатор Perl встроен почти во все UNIX-подобные операционные системы, поэтому его можно использовать в любой момент без установки. Единственное, что нужно проверить — что в системных настройках правильно указан путь к интерпретатору.

Запустить код на Perl в UNIX-среде просто: достаточно в командной строке написать perl <имя.файла> или 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 — очень гибкий язык программирования с полной поддержкой регулярных выражений. Чтобы понять, что делают некоторые программы и функции, недостаточно просто посмотреть на них — нужно понимать правила преобразования регулярных выражений и знать, как одни команды в регулярках влияют на другие.

Самый популярный пример такого кода:

echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

❌❌❌ Не запускайте этот код на своём компьютере, мы предупредили. 

Кажется, что на экране должно появиться несколько раз слово test, а дальше perl обрабатывает набор каких-то бессмысленных символов. Но на самом деле после выполнения и обработки всех регулярных выражений этот код превращается в такой:

system"rm -rf /"

❌❌❌ И этот код тоже не запускайте — можно легко стереть все свои данные и повредить файловую систему.

Не все программы на Perl выглядят как эта, но без понимания того, как работают регулярные выражения, понять код бывает очень сложно. 

Вывод: регулярные выражения — это сила. Убедились в этом в очередной раз. Если ещё не убедились — почитайте, как с их помощью можно настроить автозамену нецензурной лексики на благопристойные выражения.

Что пишут на Perl

Если коротко: всё, где нужно автоматизировать работу компьютера или преобразование данных, можно написать на Perl. 

Системное программирование. Сюда можно отнести работу с учётными записями пользователей в сетях любой сложности и конфигурации, администрирование сетей и пользователей в организации. Ещё Perl используют для автоматизации рутины — наладить резервное копирование по расписанию, отправку писем с ежедневными отчётами, сбор, обработку и анализ разных данных.

CGI-скрипты — любые скрипты для обмена данными между сервером и клиентом. Для Perl неважно, в каком виде данные выходят и поступают обратно, — он переведёт их в нужный вид и отправит из одного сервиса в другой.

Объединение сервисов или программ. Если у вас есть две программы, одна из которых выдаёт готовый результат в одном формате, а другой он требуется в другом формате, то Perl поможет вам их соединить. Работает это так: вы пишете скрипт, который запускает первую программу, получает оттуда данные, преобразует их в нужный вид и отправляет во вторую программу. В итоге всё это работает как одно целое.

Востребован ли Perl сейчас

Perl востребован, потому что в мире накопилось много старого кода, который нужно поддерживать. Дело в том, что программы на Perl работают стабильно, предсказуемо и без сбоёв, а с 1987 года их написано очень много.

Но порог входа в этот язык довольно высок — нужно обладать навыками хотя бы на уровне мидла, чтобы быть востребованным специалистом.

С чего начать

Почитать: учебник по Perl для новичков. Перевод иногда хромает, но это лучший вариант для тех, кто только начинает изучение языка.

Если знаете английский — начните с официальной страницы языка.

Посмотреть: Perl Tutorial или Great Perl Tutorial For Begginers. Тут уже всё на английском, зато более наглядно.

Бумажная книга: Изучаем Perl Рэндала Шварца и Тома Феникса. Для тех, кто любит основательно подойти к процессу и не любит читать с экрана.



Художник

Даня Берковский


Корректор

Ирина Михеева


Вёрстка

Мария Дронова


Соцсети

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Как устроены онлайн-кинотеатры: техническая сторона
Как устроены онлайн-кинотеатры: техническая сторона

Главное из подкаста «Запуск завтра».

easy
Как выиграть в самой сложной игре мира
Как выиграть в самой сложной игре мира

Поручим это нейронке.

easy
Как программируют Arduino
Как программируют Arduino

Многие думают, что на языке Wiring, но на самом деле…

medium
Инструмент тестирования Postman: зачем нужен, как работает, что умеет
Инструмент тестирования Postman: зачем нужен, как работает, что умеет

Принёс запросы для вашего сервера

easy
Не Wordle, а «Вордль»: русифицируем заморскую игру
Не Wordle, а «Вордль»: русифицируем заморскую игру

Управляем анимацией и добавляем экранную клавиатуру

medium
Английский для разработчика: что можно получить в «Яндекс Практикуме»
Английский для разработчика: что можно получить в «Яндекс Практикуме»

Как разработчику выучить язык и зачем это может быть нужно

easy
Аналитик данных: чем занимается и как им стать
Аналитик данных: чем занимается и как им стать

Собрали всё, что нужно знать для начала

easy
Сколько мониторов нужно программисту для работы
Сколько мониторов нужно программисту для работы

От одного до…

easy
Вакансия на 210 тысяч: что такое .NET и зачем он нужен
Вакансия на 210 тысяч: что такое .NET и зачем он нужен

Для тех, кто любит программировать и точка

easy
easy