Сети :: Сети

Язык Perl: прежде всего - практичность

в buzz в мой мир в twitter версия для печатисохранить в pdf

Марк Гиббс

Когда встает вопрос о создании приложений системного уровня, в частности сценариев Web-серверов, на первый план выходит язык программирования Perl - прежде всего, благодаря своей проверенности и богатству возможностей. Perl (Practical Extraction and Reporting Language, или, как иногда расшифровывают это название создатель Perl и другие его фанатичные приверженцы, - Pathologically Eclectic Rubbish Lister) является одним из наиболее мощных и популярных языков программирования.

История Perl началась в 1987 г., когда человек по имени Ларри Уолл занялся разработкой языка, необходимого ему для решения проблем системного программирования, с которыми он сталкивался как администратор Unix-систем. Несмотря на такое скромное начало, Perl вырос в полнофункциональный сложный язык. Он привлекателен тем, что заполняет разрыв между методами программирования командного процессора Unix и С-приложениями, обладая простотой первых и функциональностью последних.

Уолл характеризует его так: "Perl - это интерпретируемый язык, оптимизированный для сканирования произвольных текстовых файлов, извлечения информации из этих файлов и печати отчетов на основе этой информации. С его помощью также можно решать многие задачи системного управления. При разработке этого языка целью была не столько красота (небольшой объем, элегантность и оптимальность), сколько практичность (простота в использовании, эффективность и полнота)". Уолл указывает также, что синтаксис выражений Perl находится в полном соответствии с синтаксисом выражений языка С; Perl не ограничивает произвольно объем ваших данных - "если вы располагаете памятью, Perl может загрузить в нее весь ваш файл как одну строку"; рекурсия может быть неограниченной глубины, а, кроме того, язык применяет изощренные методы сопоставления с образцом для быстрого сканирования больших объемов данных.

Язык Perl, использующий простые синтаксис, типы данных и структуры, довольно прост в изучении; хорошо написанные Perl-программы легки для чтения и понимания. Однако за этой простотой скрывается относительно богатый набор функций Perl, который включает в себя встроенный символьный отладчик и поддержку объектно-ориентированного программирования. С помощью сложного механизма трассировки потока данных Perl может определить, поступают ли данные из небезопасного источника, и вовремя предотвратить потенциально опасные операции.

Perl легко переносим, он работает на всех основных и многих менее значимых платформах, может получать доступ к соединениям TCP/IP и интегрироваться с языком С. Он обладает также многими специализированными расширениями для доступа к базам данных и каталогам Х.500. Однако первое место в списке его достоинств занимает изобилие посвященных ему групп новостей и Web-узлов, что обеспечивает программистам на Perl поддержку и ресурсы. Для администратора интрасети этот язык - просто подарок: накладываемые им ограничения немногочисленны, он исключительно гибок и обладает широкими возможностями поддержки. Если вам этого недостаточно, имейте в виду, что Perl распространяется бесплатно, - по лицензии GNU Copyleft (www.gnu.org).

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

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

# Моя первая программа.
print "Hello Word. 
"; 

представляет собой, конечно, первую типовую программу. Она выводит на экран сообщение "Hello Word.". Приведенный выше код, который мы сохраним в файле с названием hello.pl, фактически является полным сценарием на языке Perl. Чтобы исполнить его, необходимо инициировать интерпретатор Perl следующим образом:

Perl hello.pl

Можно получить тот же результат, набрав такую командную строку:

Perl -e 'print "Hello Word. 
";'

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

Язык Perl наиболее часто используется для создания серверных приложений для Web-серверов. В следующем примере вы можете увидеть некоторые из атрибутов языка Perl в простом приложении. Это приложение будет принимать данные из формы HTML и возвращать их браузеру в виде HTML-страницы. (Нумерация строк не является частью языка Perl, она приводится только для справки.)

1 # Очень простой сценарий для Web-сервера
2 #
3 #!/usr/local/bin/Perl
4 if ($ENV{'REQUEST_METHOD'} eq "GET") {
5 $FORM_DATA = $ENV{'QUERY_STRING'};
6 } else {
7 $LENGTH = $ENV {'CONTENT_LENGTH'};
8 while ($LENGTH) {
9    $FORM_DATA .= getc(STDIN);
10    $LENGTH-;
11    }
12   }
13 print "Content-type: text/html

";
14 print "REQUEST_METHOD:
$ENV{'REQUEST_METHOD'}<BR>
";
15 print "CONTENT_LENGTH:
$ENV{'CONTENT_LENGTH'}<BR>
";
16 print "QUERY_STRING:
$ENV{'QUERY_STRING'}<BR>
";
17 print "<HR>
";
18 print "FORM_DATA: $FORM_DATA
";

Первые две строки являются комментариями, что обозначается символами "#". Третья строка характерна для сред Unix, в которых сценарий запускается только по имени - командному процессору Unix необходимо сообщить, где искать интерпретатор Perl. Конструкция #! говорит операционной системе, где найти исполняемые файлы для обработки этого сценария.

Четвертая строка указывает на одну из внутренних переменных языка Perl. Выражение $ENV позволяет возвращать значения переменных среды. Язык Perl содержит множество специальных переменных. $FORM_DATA (впервые использована в строке 5) - это переменная, определяемая пользователем. Если методом, используемым для передачи данных в Web-приложение, является GET, то аргумент возвращается из переменной среды с именем QUERY_STRING (составленным "на лету" Web-сервером) и хранится в $FORM_DATA (снова в строке 5). Если же используется другой метод (не GET), то предполагается, что им является POST, и данные берутся со стандартного входа Web-приложения. Прежде всего, количество символов для считывания возвращается из CONTENT_LENGTH, другой переменной среды, созданной Web-сервером (строка 7).

Затем мы используем цикл с проверкой условия для этого количества символов и функцию getc языка Perl, чтобы считать данные со стандартного входа в переменную $FORM_DATA (строки с 8 по 11). Perl поддерживает также все внешние управляющие структуры, такие как until, do-while, do-until и unless. Для простоты мы не проверяем в данном примере, не длиннее ли переменная CONTENT_LENGTH какого-то ожидаемого максимального числа символов, однако в реальной программе это нужно делать. Непохоже, чтобы какое-то нелепое количество символов привело к неожиданностям в поведении Perl, но нагрузка на сервер при попытках чтения, скажем, одного миллиарда символов может привести к проблемам с производительностью. Результат, включая частный заголовок HTTP (строка 13), выводится на экран через стандартный выход.

Хотя эта программа является тривиальным приложением Web-сервера, она полностью функциональна и ее можно использовать в качестве основы для решения более сложных задач, например для обработки форм HTML. В этом прелесть языка Perl: он может решать самые незначительные задачи и в то же время эффективно решать крупные.

Язык Perl непрерывно совершенствуется. Имеются его реализации для огромного числа платформ, (в том числе - Application System/400, Macintosh, MS DOS, MVS, NetWare, OS/2, Unix, VMS, Windows 3.1, 95 и NT), а также поддержка интерфейсов Internet Server API корпорации Microsoft. Компилятор Perl пока существует лишь в альфа-версии (users.ox.ac.uk/ttie/perl.html). Perl - уникальное богатое возможностями средство программирования, которое имеет много приверженцев и поддерживает различные ПО. Язык Perl является одним из основных средств для интрасетей.


"Перлы" мудрости

Где получить дополнительную информацию по Perl

Ресурс
URL
Домашняя страница языка Perl
www.Perl.com/Perl/
Архив по языку Perl Университета штата Флорида
www.cis.ufl.edu/Perl
Язык Perl - информация, сценарии, источник и приемы
www.metronet.com/1h/Perlinfo
Справочные материалы по языку Perl
www.eecs.nwu.edu/Perl/Perl.html
Руководство по решению проблем взаимодействия Perl и CGI
www.Perl.com/Perl/faq/idiots-guide.html

17.07.1997г


Комментарии:


Для того, чтобы оставить комментарий авторизуйтесь или зарегистрируйтесь.

Новости ОСП-ТВ - 03.09.10


В номере

17/10/1997 №10


Сети online
Три года с 3G
Через три года после получения лицензии на строительство сетей третьего поколения в Москве «Билайн» подвел первые итоги этого проекта. Напомним, что этот оператор получил лицензию на строительство сетей 3G в апреле 2007 года.
16.6.2010
ЦОД на "четырех стойках"
Развитие "облачных" вычислений и дальнейшая виртуализация ИТ-ресурсов обуславливают серьезные изменения сетевой инфраструктуры дата-центров. Эта тема широко обсуждалась участниками форума «Мир ЦОД 2010», проведенного издательством «Открытые Системы».
11.6.2010
Эра машин
«ВымпелКом» решил застолбить перспективный рыночный сегмент прямых коммуникаций между разными техническими устройствами, получивший условное название М2М (Machine to Machine). Соответствующие услуги отличаются хорошей динамикой роста.
11.6.2010

Коротко за неделю

Рынок услуг связи
Сети и телекоммуникации
Эта рубрика в архиве
Список номеров за




OSP.RU :: Написать письмо.