Чем отличается начинающий программист от опытного? Начинающий считает, что в 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 (www.comprice.ru)
|