Настоящие программисты не пишут комментариев. Если программу было тяжело писать, почему она должна легко читаться? |
Основная область применения Perl - системы Unix, для которых просто обязательно наличие таких базовых вещей, как командный интерпретатор Shell, компилятор Си и интерпретатор Perl. Пользователю Windows может быть непонятно, что святого в этих программных средствах, потому что в них заключаются как раз те функциональные возможности Unix, которых он лишен.
Что поделаешь, раньше необходимость поставки перечисленных средств в составе системы была очевидна, теперь же нуждается в комментариях. Создание скриптов (сценариев) shell просто необходимо для выполнения многих рутинных задач - от администрирования системы до кодирования компакт-диска в MP3. Замечательно, у вас есть программа под Windows, которая сама загоняет компакт в MP3. А как быть, если нужно первые пять треков кодировать в стерео, а остальные - в моно? Гораздо проще написать скрипт в несколько строк, который вызывает CD-граббер и кодировщик MP3 с соответствующими параметрами нужное число раз, чем переписывать готовую программу. Кроме того, универсальная программа наверняка будет кодировать MP3 хуже, чем специализированный кодировщик.
Впрочем, преимущества командной строки над графическим интерфейсом - тема отдельного спора, начавшегося еще во времена Macintoy. Идем дальше. Для инсталляции программ в Windows создается программа, которая распаковывает нужные файлы и прописывает все, что надо, в Registry. В Unix используется другая схема - программа поставляется в исходном коде, который без проблем компилируется в стандартном компиляторе на любой системе, будь то Pentium или PA-RISC.
Программы, входящие в состав системы, могут для ускорения процесса поставляться в готовом виде и устанавливаться при помощи того же скрипта, который распихивает исполняемые и конфигурационные файлы по каталогам. Отличие от Windows в том, что параметры программ (число которых, кстати, в том же Debian GNU/Linux 1.3 составляет около 1200 вместо нескольких десятков в Windows 95) хранятся не в общесистемном файле Registry, формат которого и Питер Нортон без ста грамм не разберет, а в небольших текстовых файлах, которые модифицируются текстовым редактором и описываются в документации каждой программы. Гибкость и надежность налицо, и опять же можно обходиться скриптами вместо полноценных программ.
Именно эта ориентированность Unix на текстовые файлы с открытыми форматами и определила основные черты Perl - развитые возможности сканирования и обработки текстов и управления системой. Perl используется там, где возможностей shell становится недостаточно, но еще рано разрабатывать настоящую программу, и хотя Perl представляет собой полноценный язык программирования на уровне C++, программы на нем все же называются скриптами.
Первоначально разработанный Ларри Уоллом для управления системой и работы с базами данных, со временем Perl получил признание множества пользователей Unix, а с появлением World Wide Web Perl хорошо себя зарекомендовал в качестве средства CGI-программирования. WWW опирается на текстовый формат HTML (а в области обработки текста Perl нет равных), с помощью встроенного в него механизма регулярных выражений можно несколькими строками описать действия, реализация которых на Си займет несколько страниц и к тому же будет работать медленее, даром что программы на Perl интерпретируются.
Я не буду подробно излагать принципы программирования на Perl, ограничусь несколькими примерами, которые дают представление о том, как выглядят скрипты на Perl. Думаю, настоящие хакеры не откажут себе в удовольствии вонзить зубы в чужую программу на незнакомом языке. Тем же, кто серьезно интересуется программированием на Perl, рекомендую обратиться к замечательному изданию "Изучаем Perl" Рэндала Шварца (издательство O'Reilly/BHV), кстати, одобренному самим Ларри Уоллом.
Текущая версия Perl - 5.004. Версия 5.0 замечательна поддержкой ООП, а в 5.004 впервые был включен модуль CGI.pm, упрощающий работу с CGI. Ларри Уолл обещает этим летом выпустить Perl 5.005, который будет поддерживать многопоточные процессы и содержать компилятор. На самом деле программы на Perl и так компилируются в свой внутренний формат во время запуска, но теперь на выходе можно будет получить файл с байт-кодом Perl или исходником на Си, а в дальнейшем к этому набору добавятся байт-коды Java. Ларри Уолл считает, что Perl больше подходит для написания небольших программ, чем Java, и собирается всерьез конкурировать с детищем Sun Microsystems; уже сейчас Perl насчитывает не меньше пользователей, чем Java, а областей применения у него даже больше.
Дмитрий БОРОДАЕНКО
#!/usr/bin/perl -w print "Сколько Вам лет? "; $a = <STDIN>; chomp $a; unless ($a <18) { $voters++; } ___________ # применяем переменную по умолчанию while (<>) { chomp; if (s/\\$//) { $_ .= <>; redo unless eof(); } # здесь обрабатываем $_ } ___________ # распознать время в формате чч:мм:сс if (/Time: (..):(..):(..)/) { $hours = $1; $minutes = $2; $seconds = $3; } ___________ # поменять местами два первых слова в $_ s/^([^ ]*) *([^ ]*)/$2 $1/; ___________ # работаем с циклами foreach $elem (@elements) { $elem *= 2; } for (@ary) { s/foo/bar/ } $on_a_tty = -t STDIN && -t STDOUT; sub prompt { print "yes? " if $on_a_tty } for ( prompt(); <STDIN>; prompt() ) { # выводим результаты }
Горячие темы