Введение
Цель этой книги — дать вам весь материал, необходимый для того, чтобы стать программистом на языке Perl. И это говорит о многом. Perl — это не просто обычный язык программирования. Он возбуждает преданность, страсть, экзальтированность, эксцентричность (не говоря уже о раздражении и расстройстве). Perl — больше, чем язык, для поэтов и фанатов программирования он источник творческого вдохновения и средство для его реализации. Он может быть сложным и загадочным, вводящим в заблуждение и противоречивым. Но для истинного разработчика другого пути нет. Вы поймете, что именно я имею в виду, когда прочтете эту книгу.
На двенадцатый год своего господства Практический Язык для Извлечения текстов и Генерации отчетов (Practical Extraction and Reporting Language) — также называемый некоторыми Патологически Эклектичный Язык для Распечаток Чепухи (Pathologically Eclectic Rubbish Listing) — стал всеобщим любимцем. Потрясающее количество людей посвятило впечатляющее количество свободного времени работе с ним, его совершенствованию и повсеместному распространению. С момента начала моей работы с Perl до появления идеи создания книги о нем прошли многие годы. Возможно, увидев, как работает Perl, вы также станете его поклонником.
Что есть в этой книге
Эта книга не только объясняет синтаксис языка Perl, она также дает реалистическое представление о том, что из себя представляет Perl сегодня и как он используется. Например, когда вы заглядываете в мир Интернет, Perl буквально повсюду — поэтому в книге уделяется достаточно много внимания CGI-программированию. Также популярный сегодня вопрос о связи между Perl и Tk, который позволяет с помощью Perl выводить на экран окна, кнопки, меню и др. элементы графического интерфейса, — стал другой темой данной книги. Затрагиваются также и другие вполне практические вопросы типа подключения Perl к базам данных, серверам, работающим по технологии Windows OLE Automation, к другим процессам, и так далее. Все это вы найдете в этой книге. В целом, она написана так, чтобы дать вам наиболее полное представление о том, что происходит с языком Perl сегодня.
Кроме информации непосредственно о языке Perl версии 5, в этой книге вы также найдете множество дополнительных сведений — это и создание более читаемого Perl-кода, и блоки BEGIN и END для пакетов, совместимость с операционными системами класса POSIX, объектно-ориентированное программирование, произвольно вложенные структуры данных, лексические области видимости, расширенные возможности по использованию модулей, а также другие темы. Версия 5 стала блестящей реализацией возможностей языка Perl, поэтому книга написана именно на основе этой версии.
Книга разбита на отдельные, легко читаемые отрывки (примерно 500 тем), каждый из которых относится к определенному разделу программирования. Вот некоторые из них:
Синтаксис языка Perl версии 5: команды и описания
Интерактивный запуск Perl-сценариев
Текстовый ввод и вывод
Создание скалярных переменных
Скалярный контекст и контекст списка
Создание массивов и хешей
Циклы и условные операторы
Таблицы символов и тип данных typeglob
Операторы языка Perl
Регулярные выражения и работа со строками
Создание подпрограмм
Переменные с лексической областью видимости
Временные переменные
Устойчивые (persistent), или статические переменные
Рекурсивные подпрограммы
Анонимные массивы, хеши и подпрограммы
Ссылки в языке Perl
Символические ссылки
Устойчивые (persistent) ограничители области видимости
Шаблоны функций
Специальные переменные Perl
Встроенные функции Perl
Функции POSIX
Форматы языка Perl
Взаимодействие между процессами
Технологии Win32 OLE Automation
Работа с файлами
Файлы баз данных DBM
Блокировка файлов
Операторы Perl для работы с оглавлениями
Тесты быстродействия
Операторы, чувствительные к локальным настройкам
Безопасное изолирование кода
Perl/Tk: использование библиотеки Tk
Сложные записи
Массивы массивов, хеши хешей, массивы хешей и хеши массивов
Связанные списки и кольцевые буферы
Пакеты Perl
Конструкторы и деструкторы пакетов
Разбивка пакета на несколько файлов
Модули Perl
Экспорт символов из модулей
Автозагрузка подпрограмм модулей
Классы Perl
Конструкторы классов
Объекты Perl
Методы классов
Переменные экземпляра класса и переменные класса
Наследование классов
Множественное наследование
Связывание скаляров, массивов и хешей
Перехват ошибок времени выполнения
Отладчик Perl
Язык PerlScript
Программирование Common Gateway Interface (CGI-программирование)
Создание и использование форм HTML в CGI
Защита данных для CGI
Меченые данные и восстановление данных
Как дать повышенный приоритет и права CGI-сценарию
Создание своего Web-счетчика
Создание гостевой книги
Как послать письмо через CGI-сценарий
Общение в реальном времени (создание чат-приложений)
Вопросы секретности для многопользовательского режима
Отражение атак на сервер
Очистка обновленных элементов управления HTML
Создание «теневых посылок» (cookies)
Запись данных на Web-страницу перед вызовом сценария
Имеются одно или два соглашения, которые я использую в этой книге, и о которых вам надо знать. Когда мне надо указать на конкретную строчку кода, я выделяю ее следующим образом:
$text = "Hello\n";
print $text;
А чтобы отделить результат работы сценария от собственно сценария, я выделяю его так:
$text = "Hello\n";
print $text;
Hello
Что еще вам потребуется
В этой книге я использую интерпретатор языка Perl версии 5.005. Perl является свободно распространяемым программным продуктом. Все, что вам надо сделать — это загрузить его из Интернета и установить (см. раздел «Как скопировать и установить Perl» в гл. 1). Если вы работаете в многопользовательской системе, в ней уже может быть установлен Perl. Чтобы проверить это, попробуйте выполнить команду
perl -v
которая выведет версию вашего Perl-интерпретатора.
Подсказка: Еще пара замечаний перед тем, как вы начнете самостоятельно работать с Perl. Я советую, чтобы вы использовали ключ -w в командной строке при запуске интерпретатора. В этом случае в процессе обработки сценария Perl при необходимости будет выводить предупреждающие сообщения (когда-нибудь это станет поведением интерпретатора по умолчанию). Второй совет: задавайте в сценарии прагму use strict — в этом случае Perl требует, чтобы все переменные были описаны в явном виде. Выполнение этих двух простых советов сэкономит вам удивительно много времени для отладки.
Вам также потребуется инструмент для создания Perl-сценариев. Сценарии — это просто текстовые файлы, содержащие команды и описания языка Perl. Чтобы создать сценарий для Perl, вам нужен текстовый редактор, который сохраняет редактируемые файлы в формате простого текста. (Относительно подробностей — см. раздел «Как написать сценарий для Perl» в главе 1.)
Отмечу, что вам не потребуется глубокое знание операционной системы Unix, для которой исходно создавался язык Perl. Хотя многие книги по Perl считают как данное, что вы являетесь программистом в среде Unix, для данной книги это не так. Perl далеко вышел за рамки Unix, и настало время, чтобы руководства по Perl признали этот факт<$FВ этом отношении книга устарела — практически все современные руководства по Perl не подвергают сомнению существование платформ, отличных от Unix (прежде всего, MS Windows). Несомненно, однако, что правильно Perl работает только для Unix-подобных операционных систем. — Примеч. ред.>.
Другие ресурсы
Существуют и другие ресурсы, которые могут помочь при работе с Perl. К интерпретатору прилагается обширная и полезная документация. В системах типа Windows эта документация предоставляется в виде связанных HTML-страниц. Для многопользовательских систем вы, как правило, получаете доступ к этой документации с помощью системных команд (подобно команде man операционной системы Unix).
Для программистов на Perl имеется также ряд телеконференций (групп новостей USENET):
comp.lang.perl.announce — группа с низким потоком сообщений.
comp.lang.perl.misc — группа с интенсивным потоком сообщений (сюда, в частности, рассылается FAQ-файл по Perl).
comp.lang.perl.modules — все, имеющее отношение к созданию модулей и многократно используемого кода.
comp.lang.perl.tk — о связях Perl и оконно-графической библиотеки Tk. Они поддерживают большое количество визуальных интерфейсных элементов (кнопки, меню и так далее). Вы можете использовать их в Perl, что становится довольно популярным.
Если вы интересуетесь CGI-программированием, взгляните на группу новостей
comp.infosystems.www.authoring.cgi — эта группа не содержит шаблона perl в своем имени, однако это хорошее место для обсуждения с другими разработчиками особенностей CGI-программирования на Perl.
В Сети имеется также многочисленные Web-страницы, посвященные Perl (случайный поиск по «Всемирной Паутине» возвращает более 1.527.903 страниц, на которых упоминается Perl):
Домашняя страница Perl — www.perl.com, здесь вы сможете найти исходный код интерпретатора Perl и готовые программы под различные операционные системы, документацию, модули, сообщения об ошибках, а также FAQ — список ответов на часто задаваемые вопросы (он находится на www.perl.com/perl/faq).
Чтобы загрузить сам Perl, его модули, расширения, и тонны других имеющих отношение к нему вещей, загляните в архив CPAN (Comprehensive Perl Archive Network) на www.cpan.org или www.perl.com/CPAN-local/CPEN.html. Это — огромный, объединяющий несколько узлов источник почти что всего, что имеет отношение к Perl. Если вы прогуляетесь по архиву CPAN то гарантированно найдете там нужный вам код. Все — от расширений языка Perl до обработки изображений, от модулей для работы в Интернет до интерфейсов к базам данных.
Институт Perl на www.perl.com — это некоммерческая организация, чьей целью является, по ее собственным словам, «поддержка Perl доступным, работоспособным и бесплатным для всех». Институт, собрав под своим крылом цвет содружества любителей Perl, обеспечивает серьезную поддержку обмена информацией между программистами на Perl.
Страница, посвященная самому языку Perl, находится на www.perl.com/perl/ (сюда же вас приведет ссылка language.perl.com). Здесь находятся обзоры, новости, списки ресурсов, программное обеспечение. Здесь же расположен каталог списков рассылки (mailing lists), посвященных Perl.
Многие узлы, специализирующиеся на таких вопросах, как обеспечение секретности, CGI-программирование, и т. д., содержат разделы, относящиеся к Perl — если не боитесь утонуть в потоке подобной информации просто проведите Web-поиск.
Также четыре раза в год издается печатный (бумажный) вариант журнала по языку Perl. Больше узнать о нем можно, заглянув на страничку orwant.www.media.mit.edu/the_perl_journal/<$FИли же на www.tpj.com. — Примеч. ред.>.
Итак, вся необходимая вводная информация дана — время приступить к изучению Perl. Начнем, как водится, с главы 1.