Perl
Perl — интерпретируемый язык программирования общего назначения, известный своей мощной работой с текстом и регулярными выражениями. В девяностые и нулевые на нём держалась большая часть динамического веба.
Что даёт
Perl разрабатывался в конце восьмидесятых для обработки текстовых файлов и генерации отчётов, но с расцветом веба стал главным языком для написания CGI-скриптов. В нём из коробки есть регулярные выражения на уровне синтаксиса, нативная работа с файловыми дескрипторами и огромный архив модулей CPAN.
Главная фича Perl — гибкость синтаксиса и принцип TMTOWTDI (There's More Than One Way To Do It). Одну и ту же задачу можно решить десятком разных способов. Однако эта же гибкость сыграла с языком злую шутку: код на Perl легко превращается в «unmaintainable» спагетти, из-за чего его часто шутливо называют языком, предназначенным только для записи, но не для чтения (write-only language).
В современной инфраструктуре Perl держит позиции по нескольким причинам:
- Совместимость с legacy. Тысячи старых корпоративных систем, билингвов, самописных мониторингов и панелей управления до сих пор работают на Perl.
- Мощный парсинг. В задачах регулярной обработки гигабайтных логов или текстовых дампов Perl до сих пор отрабатывает шустро и без жуткого расхода памяти.
- Системные утилиты. Многие дефолтные инструменты в Linux (например, rename, компоненты Git или утилиты сборки пакетов в Debian/Ubuntu) под капотом используют Perl.
Как использовать
В новых проектах Perl выбирают редко — веб ушёл на Python, Go, Node.js и PHP. Но на хостинге и в серверной инфраструктуре с ним сталкиваются регулярно.
- Поддержка старых CGI-скриптов. Если на сервере крутится legacy-проект, его запускают через Apache (mod_perl) или настраивают обёртку FastCGI (FCGI, Plack/PSGI), чтобы не плодить CGI-процессы на каждый запрос.
- Парсинг логов и автоматизация. Скрипты на Perl отлично подходят для крон-задач: вытащить данные из текстового лога, профильтровать через preg-выражение и сформировать отчёт.
- Плавная миграция. Переписывать 200 тысяч строк Perl-кода на Go или Python за один спринт никто не станет. Проект обвешивают интеграционными тестами, закрывают его API-слоем и вытаскивают логику по частям в микросервисы.