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

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

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

medium
MySQL — царица баз
MySQL — царица баз

Она сложная, но с ней всё просто.

easy
Что такое IP-телефония и как она работает
Что такое IP-телефония и как она работает

И в чём отличие от звонков по Zoom, Telegram и WhatsApp

easy
Selectel: как работает российский провайдер инфраструктуры и облаков
Selectel: как работает российский провайдер инфраструктуры и облаков

Чем занимается инфраструктурный провайдер, можно ли в него устроиться и как там с импортозамещением

easy
Девопс-2024: что и как
Девопс-2024: что и как

Чего ожидать и что изменится

easy
Single Page Application: как работает сайт-приложение
Single Page Application: как работает сайт-приложение

Это не сайт и не приложение. Что это?

easy
NFT — новые модные токены. Зачем они нужны и не развод ли это?
NFT — новые модные токены. Зачем они нужны и не развод ли это?

Объясняем на Аллегровой.

easy
easy