Как понять, что это Perl

Среди множества языков программирования, используемых в web-технологиях, особое место принадлежит языку Perl. Perl (обычно расшифровывают как Practical Extraction and Report Language) - язык программирования, первоначально ориентированный на обработку текстовой информации. Правда, за время своего широкого использования, Perl оброс многочисленными расширениями, которые позволяют с его помощью решать и многие другие, совсем не "текстовые", задачи.

В технологиях создания web-сайтов Perl, в частности, используется для написания CGI-программ. Perl давно стал стандартом и сейчас едва ли можно найти хостинг-провайдера, который не предоставляет по крайней мере поддержку CGI-скриптов на Perl своим клиентам.

Как язык программирования, Perl отличается, например, тем, что имеет развитые "встроенные" средства не только для преобразования текстовых строк, но и для выполнения разнообразного поиска и замены внутри них. Эта особенность, а также другие свойства, делают Perl весьма удобным инструментом для создания web-сервисов, так как последние часто в существенной мере зависят от функций обработки текстов.

Программы, написаные для Web на языке Perl, исполняются на web-сервере. Посетитель сайта видит лишь результаты их работы и, в подавляющем большинстве случаев, сама работа программ остаётся для посетителя невидимой. По сравнению с демонстрацией статических HTML-страниц, динамический сайт, использующий для генерации страниц Perl, обычно создаёт бОльшую нагрузку на сервер и может работать медленнее. Однако на хорошем хостинге такое замедление станет заметным лишь тогда, когда посещаемость сайта приблизится к десяткам тысяч посетителей в сутки.

Perl появился двадцать лет назад, в 1987-м году. За эти двадцать лет язык претерпел существенные изменения, приведшие к появлению множества версий. На данный момент актуальной является "старшая версия" Perl 5, в разработке находится новое поколение - Perl 6.

Для удобства программистов множество регулярно требуемых функций в среде Perl реализовано в виде так называемых Perl-модулей. Эти модули "подключаются" к реализации языка и позволяют вместо разработки собственных функций для той или иной задачи вызывать библиотечные функции, созданные авторами модуля. Например, существуют модули для работы с графикой (сам по себе Perl не имеет никаких графических инструментов), модули для автоматизации обработки web-форм и взаимодействия с CGI. Общее количество Perl-модулей давно измеряется сотнями, но среди них есть несколько десятков, ставших более-менее стандартными.

Набор установленных (и доступных для пользовательских программ) на хостинг-площадке Perl-модулей часто определяется хостинг-провайдером. Впрочем, не так уж редко хостинг-провайдер позволяет клиенту устанавливать и свои дополнительные модули. Набор доступных Perl-модулей весьма актуален в тех случаях, когда при создании web-сайта планируется использовать готовое программное обеспечение на языке Perl. Дело в том, что для успешной работы этого программного обеспечения могут потребоваться Perl-модули, не установленные у хостинг-провайдера - и, как результат, программы не будут работать. Поэтому, прежде чем выбирать программное обеспечение для "запуска" на web-сайте, следует уточнить, что хостинг-площадка поддерживает требуемые модули.

Важным преимуществом Perl является то, что вокруг этого языка уже много лет назад сложилось сообщество программистов, разрабатывающих публично доступные, бесплатные программы для решения различных задач. В том числе и программы для web-сайтов. Готовые решения оформляются как в виде отдельных Perl-скриптов (программ), так и в виде Perl-модулей. Например, подробнейший архив Perl-модулей, упорядоченный по типам задач, ими решаемых, можно найти на сайте CPAN.


Примеры программирования на Perl

1. Вывод текстовой строки в браузер клиента.

В примере через web-сервер в браузер клиента передаётся текстовая строка "Привет, браузер!"

#!/usr/bin/perl

print "Content-Type: text/html;\n\n";

print "Привет, браузер!";

2. Простое преобразование и передача текста.

CGI-программа из примера производит замены в текстовых строках из массива и передаёт результат web-серверу (для отправки в браузер клиента). Комментарии отделены символом '#'.

#!/usr/bin/perl

@n=("Полю", "Люто", "Мори", "Гигиена"); # Массив @n инициализируется текстовыми строками. (В Perl массивы обозначаются префиксом @).

print "Content-Type: text/html;\n\n"; # Выдача стандартного заголовка web-серверу.

print "<html><head><title>Замена букв</title></head><body bgcolor=\"#FFFFFF\">"; # HTML-код начала страницы.

foreach $i (@n){ 

# Последовательный перебор всех элементов
# массива @n. Для хранения очередного элемента
# служит скалярная (строковая) переменная
# $i (скаляры в Perl обозначает префикс $).

    $i=~s/ю|и/е/;

# С помощью регулярного выражения и
# стандартного для Perl оператора замены 's'
# производится замена символов "ю" и "и"
# на символ "е". Заменяются только первые
# вхождения символов.

    print "<br>$i"; # Полученная в результате строка выводится в браузер.

        }

if(rand(10)>5){ 
# В зависимости от значения, полученного от генератора
# псевдослучайных чисел, выводится одна из двух фраз.

    print "<br><br>И это ещё не всё!";

        }
    else{

    print "<br><br>Это конец!";

        }

print EndData();
# Вызывается функция (подпрограмма) EndData(),
# определённая ниже, и результат её работы передаётся в
# браузер.

exit;

sub EndData
{

return "<br>***<br></body></html>";

}

3. Регулярные выражения (поиск и замена)

Так как Perl создавался для обработки текста, то он имеет мощные встроенные средства работы с текстовыми строками. А некоторая необычность синтаксиса Perl, по сравнению с другими языками, широко применяемыми для web-программирования, делает
многие полезные "предложения" этого языка непривычными на вид. Например:

@numbers= $str=~m/(\d+\.?\d*|\.\d+)/g; - Извлечение всех чисел из строки $str; в результате массив @numbers содержит числа, которые встретились в строке $str;

$str=~s/"([^"]*)"/'$1'/g; - замена кавычек на апострофы.

(Примеры регулярных выражений из книги Perl Cookbook, авторы: Tom Christiansen и Nathan Torkington.)