Введение

Цель этой книги — дать вам весь материал, необходимый для того, чтобы стать программистом на языке 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.