IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Hello, Perl!
Perl FAQ по-русски

Дмитрий Репин aka cmapuk[0nline]

Чем отличается начинающий программист от опытного?
Начинающий считает, что в 1 килобайте 1000 байт.
Опытный считает, что в 1 километре 1024 метра.
Фольклор

Введение

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

После рассмотрения вопросов установки Перл я расскажу о различной Перл-документации, о ее использовании и далее в тексте буду ставить ссылки на соответствующие разделы доков.

Использование мной слова "консоль" для пользователей Windows (Win32) будет означать, что им надо запускать "Сеанс MS-DOS". В статье я буду ориентироваться, в основном, на пользователей Windows, так как особенности этой системы (чаще - ее незнания), сбивают с толку начинающих программистов, прочитавших книжку (статью) про Перл, написанную заядлым юниксоидом.

Формат текста:

Жирным черным текстом будут обозначены строки консоли (командная строка, шелл), то есть консольный ввод/вывод.

Шрифт Courier New будет использоваться для фрагментов кода и т.п.

Курсивом обозначим ссылки на документацию perldoc.

Установка и настройка

"Если есть какое-либо устройство (программа), нуждающееся в ручной установке и настройке, оно, как правило, не поддается ни тому, ни другому".
Что-то вроде закона Мерфи.

Многие горе-CGI-программисты пытаются писать cgi-скрипты, не имея у себя на машине установленного Perl'а. В этом и заключается их Fatal Error. Почему? Потому что:

1) Установленный Перл - это наличие документации. 2) Установленный Перл - это отслеживание ошибок и отладка. 3) Установленный Перл - это постоянная практика прикладного программирования. Одним словом, "MustHave". Как сделать "Have"?

Пользователям UNIX повезло - в комплекте ОС этого типа Perl присутствует, а Win32-юзерам следует сходить на www.activestate.com и скачать дистрибутив (версию Stable). Рассказывать, как нажимать кнопку "Next", наверное, не стоит ;-), а посему остановимся на Upgrade Перла, то есть на установке модулей. Для этого существует несколько способов.

1) Ручной. Для этого метода установки пользователям Win32 понадобится утилита nmake.exe, которой нет в комплекте этой ОС. Следовательно, ее нужно скачать (www.filesearch.ru). Скачали? Кладем эту программу в директорию X:\\Gde\Perl\bin или X:\\WINDOWS, для удобства переименовав ее в make.exe. Теперь можно начинать установку.

Скачиваем архив модуля с www.cpan.org, распаковываем во временную директорию и видим примерно следующее:

Makefile.PL
SuperModule.pm
MANIFEST
Changes
README

Читаем ридми-файл и проверяем, подходит ли этот модуль под нашу ОС. Если подходит, то открываем консоль и пишем

>perl makefile.pl

Если перл не ругается на ошибки, значит, мы прочитали README :-).

Теперь тут же пишем

>make
>make test
>make install

Если выдаются какие-либо ошибки, значит, читаем README снова и снова. Некоторые модули могут не иметь версии под вашу ОС или требовать установки других модулей, которые они используют. Все это отображается в сообщениях об ошибках при установке. Если же установка прошла нормально, можно удалить установочные файлы из временной директории.

2. CPAN-консоль. Этот способ установки использует специальный модуль CPAN. У пользователей Win32 этот метод вызовет затруднения, так как потребует некоторых дополнительных утилит, которых нет в комплекте ОС. Поэтому для них имеется третий способ установки ;-) (см. ниже). Список необходимых утилит можно увидеть при настройке cpan-шелла.

Запуск в консоли:

>perl -MCPAN -e shell

Это означает, что мы запускаем функцию shell из модуля CPAN (подробнее об этом ниже).

Открывается консоль cpan>. При первом запуске она попросит ее настроить, что мы любезно и выполняем.

После настроек, набрав help, мы получим справку о командах cpan-шелла. Для установки модуля необходимо подключиться к Интернет и набрать install ModuleName. Далее произойдет автоматическая установка модуля прямо с сайта CPAN. При этом cpan-shell выберет версию под вашу ОС, проверит, требуются ли для устанавливаемого модуля другие модули, и предложит их установить.

3. PPM (Perl Package Manager). В комплекте Перл от ActiveState имеется утилита PPM. Установка модулей с помощью этой утилиты так же, как и с cpan-shell, не зависит от ОС. С ее помощью можно установить модуль как вручную, так и автоматически через Сеть. Для установки модуля потребуется его ppm-пакет, который можно скачать с www.activestate.com. Откройте консоль и наберите: ppm. Установка происходит следующим образом:

ppm> install ModuleName - С сайта Active

State, автоматически, как и в случае cpan-консоли.

ppm> install path/to/ppmpack/Module.ppd - Из локальной директории. Об этом способе сказано ниже.

PPM, в отличие от CPAN-шелла, не требует ничего кроме nmake.exe, который уже вами скачан.

4. Полный Upgrade. Пример автоматизации процесса установки большого количества модулей с помощью PPM.

Вариант 1. Полная автоматика ;-)

Составляем список модулей. Для этого надо просто зайти на сайт ActiveState в раздел PPMPackages и сделать Copy/Paste. Сохраним список в файле modlist.txt. Пишем следующий скрипт:

open(F,"modlist.txt");
chomp(@modz=);
close(F);
open(F,">modinstall.log");
foreach $mod(@modz){
         system("ppm install $mod");
         print F "$mod\n";
}
close(F);

Подключаемся к Интернету, запускаем наш скрипт и, если у нас канал не ADSL, то ложимся спать. Установка займет много времени.

Вариант 2.

Этот способ хорош тем, что все модули мы можем впоследствии записать на ЦД-диск, что будет очень полезно для экономии интернет-траффика.

Нам потребуются следующие инструменты:

1. Teleport Pro (или другой "паук").

2. Windows Commander(в KDE - K-Commander) или другой продвинутый файл-менеджер (полезен для массовой распаковки).

3.PPM.

Порядок установки следующий:

Натравливаем "паука" на страницу со списком ZIP-архивов PPM-модулей (Адрес: http://www.activestate.com/PPMPackages/zips/6xx-builds-only/), при этом в настройках указываем ему скачивать только файлы ZIP (докачка поддерживается). Через некоторое время мы получим комплект из более чем 1000 модулей, весом более 100 Мб. Распаковываем все это добро в директорию unpack. Там получится 3 директории (типы ОС) и большой список файлов *.ppd. Теперь пишем такой скриптик:

opendir(D,".");
@filez=readdir(D);
closedir(D);
foreach $f(@filez){
         system("ppm install $f") if $f=~/ppd$/i;
}

Бросаем его в директорию с ppd-файлами, запускаем, и на ближайшие полчаса оставляем наш компьютер в гордом одиночестве пережевывать модули. Вот и все.

Данный скрипт можно проапгрейдить до ведения статистики, отлова ошибок и т.д., но это уж вы как-нибудь сами =). Идея проиллюстрирована, дальше можно применять свою безграничную фантазию.

Save me, St.-Perldoc!

"Меньше знаешь - крепче спишь".
Плохая поговорка

perldoc - это Библия перл-программиста. Поэтому, если кто-то кого-то посылает в перлдок, значит, следует туда и отправиться, а не обижаться и устраивать в форумах лишние флеймы. Что из себя представляет эта Великая Книга?

perldoc - это стандартная для Perl-комплекта программа, выдающая по запросу нужную(!!!) информацию. Это вам не Яндекс какой-нибудь! :-). Запуск ее производится в консоли следующим образом:

perldoc [-опции] строка

Опции не обязательны и служат для задания способа поиска. Вот примеры использования:

perldoc -f open - выводит описание функции open();

perldoc -q blablabla - производит поиск слова blablabla по документации FAQ;

perldoc LWP - выводит описание модуля LWP;

perldoc perldoc - выводит справку о работе с perldoc. Здесь вы найдете описание всех опций поиска.

Документация Перл разбита на разделы, по каждому из которых можно вывести справку. Веcь список разделов можно получить с помощью команды perldoc perl. Вот некоторые из них:

perlfaq - FAQ по Перл;

perlsyn - о синтаксисе Перл;

perldata - структура данных Перл;

perlop - операторы;

perlsub - подпрограммы;

perlfunc - стандартные функции;

perlreftut - краткое введение в Перл;

perlrequick - краткое описание работы с регулярными выражениями;

perlvar - встроенные переменные;

perlre - работа с регулярными выражениями;

perlboot - объектно-ориентированное программирование для начинающих;

perlipc - межпроцессное взаимодействие;

perlnumber - семантика чисел в Перл;

perllocale - локализация программ (поддержка русского языка);

perlmod - как работают с модулем;

perlmodlib - как писать и использовать модули;

perlfaqЦифра[1-9] - еще FAQ;

perlutil - утилиты комплекта Перл;

perlhack, perl hackers guide ;-))), perlhist - исторические справки;

perldos - замечания для использования в DOS;

perlmacos - замечания для использования в MacOS;

perlwin32 - замечания для использования в Windows.

Вызов информации по разделу производится командой в консоли: perldoc-раздел.

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

Документация perldoc хранится в файлах формата POD (perldoc perlpod). Но это не единственная возможная форма справки. Чтобы превратить POD в HTML, нужно воспользоваться стандартной утилитой pod2html. Также имеются утилиты pod2hlp, pod2text, pod2man и др., название которых говорит само за себя ;-).

Вот и все, что нужно знать о Великом perl-doc.

Нихачу учицца а хачу праграммить!

Анекдот:

- Иванов! Ду ю спик инглиш?
- Че?
- Садись, два!
- Петров! Ду ю спик инглиш?
- Че?
- Садись, два!
- Сидоров! Ду ю спик инглиш?
- Йес! Ай ду!
- Че?

Хорошей документации о Перл на русском мало. Есть энтузиасты, которые сами переводят некоторые опусы и выкладывают их бесплатно на просторах WWW (perldoc.narod.ru). Конечно, этого мало.

Есть несколько книг. Приведу в пример те, которые знаю:

"Perl. Учебный курс" авторства тов. Маслова - из разряда "Не для чайников".

Эту небольшую книжку можно купить (не знаю где, но у меня валяется), а можно почитать в онлайн на сайте www.citforum.ru.

"Perl. Специальный справочник". Перевод "Perl Core Language. Little Black Book" Стивена Холзнера - из класса "Для чайников". Неплохая книжка с множеством примеров, что очень важно для начинающих.

Приобрести можно на www.piter.com, а возможно, они ее уже бесплатно выложили в онлайн, так как книжка двухлетней давности. Отделения издательства "Питер" есть и в других городах России - адреса ищите на сайте.

"Perl. Библиотека программиста". Перевод замечательной книги "Perl CookBook", написанной Т. Кристиансеном и Н. Торкингтоном при участии множества участников Usenet-конференций по Perl, а также при участии самого создателя Перл - Ларри Уолла.

"Perl/CGI-программирование". Перевод еще одной хорошей книги. Есть в издательстве "Питер" и, насколько я помню, в издательстве "BHV". На этом список русскоязычной информации не заканчивается. В последнее время появился еще ряд новых книг, однако о них я ничего не могу сказать - не читал. А вот лучшие книги о Перл на английском языке, которые можно скачать из Сети в HTML-формате:

Advanced Perl Programming - By Sriram Srinivasan

CGI Programming on the World Wide Web - By Shishir Gundavaram

Learning Perl - By Randal Schwartz, Tom Christiansen & Larry Wall

Perl in a Nutshell - By Ellen Siever, Stephen Spainhour & Nathan Patwardhan

Programming Perl - By Larry Wall, Tom Christiansen & Randal L. Schwartz.

В этих книгах имеется невероятное количество примеров.

Теперь разберемся, что делать, если вы не то что английский не знаете, но и с русским проблемы ;-).

Конечно, главный совет - учить! Но что делать, если это невозможно (в нашей деревне школы нет, нет денег на курсы, и т.д.)? Остается учиться самим потихоньку. Лучше всего это получится с помощью практики. Чтение perldoc как раз и дает такую практику. Итак, для начала вам понадобится PROMT 2000. Этот переводчик вполне сносно переводит тексты, и это поможет хоть как-то пользоваться перлдоком. В процессе чтения английских текстов с помощью перевод-чика вы выучите технический английский, это я могу гарантировать. Почему именно ПРОМТ? Просто только эта программа именно этой версии переводит тексты не ради шутки, а для чтения (вспомним стайлус ;-)).

С английским вроде разобрались. Теперь дам немного ссылок на ресурсы.

www.cgi-resources.com - большой архив программ, которые можно использовать как примеры.

www.perlmonks.com - здесь множество серьезных людей выкладывают сырцы своих программ.

www.oreally.com - это сайт самого перловского книжного издательства. Когда-то оно помогало Ларри Уоллу, да и сейчас разработчики Перл и издательство тесно сотрудничают.

Наши родные www.perl.ru и www.perl.org.ru, к сожалению, пока не тянут на звание супер-перл-ресурсов, но это уже зависит от нас с вами. Призываю всех найти время и написать хотя бы по статейке!

Теперь хотелось бы немного рассказать об альтернативах получения информации. Конечно же, это веб-форумы, конференции Usenet и IRC. Если нет проблем с английским языком, то:

1) Раздел ссылок на сайтах www.perl.com, www.cpan.org, www.activestate.com расскажет, где можно найти множество не "мертвых" веб-конференций, посвященных Perl.

2) В Usenet найти Perl-конференции не трудно. Вот некоторые из них:

- comp.lang.perl.announce - новости, объявления, и т.д.

- comp.lang.perl.misc - тут можно задавать вопросы, обсуждать проблемы.

- comp.lang.perl.modules - конференция по модулям Перл.

- comp.lang.perl.tk - конференция по Perl/Tk.

3) На IRC-канале #Perl в сети DALNET круглосуточно обитает много народу. Можно задать вопрос, и в 99% случаев вам помогут.

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

Спасибо за внимание.

Источник: "Компьютер Price", http://www.comprice.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com