Шаг 157.
Модуль CGI.pm (общие замечания)

    На этом шаге мы дадим общую характеристику модуля CGI.pm.

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

    Модуль CGI.pm, созданный Линкольном Штейном, входит в состав дистрибутивного комплекта Perl, начиная с версии 5.004, и его даже не нужно специально инсталлировать.

    Этот модуль содержит большой набор функций для создания и обработки HTML-форм. Мы посвятили значительную часть предыдущих шагов изучению многочисленных тэгов, чтобы затем написать HTML-код для создания формы в рассмотренном примере. Модуль CGI позволяет сделать то же самое, но без использования HTML. С его помощью можно описать форму на языке Perl, используя вместо тэгов обращения к функциям модуля. В результате получится не документ HTML, а сценарий на языке Perl, который при вызове будет "на лету" генерировать HTML-форму и передавать серверу для отправки клиенту.

    Модуль CGI является не просто модулем, а классом, что позволяет использовать преимущества объектно-ориентированного подхода. Модуль предоставляет пользователю на выбор два вида интерфейса с самим собой: процедурно-ориентированный и объектно-ориентированный.

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

#! /usr/bin/perl
use CGI qw/:standard/;
print header(),
   start_html ('Пример формы') ,
   h1 ('Пример формы'),
.   .   .   .

    Директива use импортирует в пространство имен вызывающей программы некоторый стандартный набор функций. Помимо него, существуют другие наборы функций модуля CGI. Их можно импортировать, указав имя соответствующего набора в списке импорта директивы use. Имена всех наборов можно просмотреть в файле CGI.pm, где они содержатся в хеш-массиве %EXPORT_TAGS.

    Функции header(), start_html(), h1() являются функциями модуля CGI. Они будут рассмотрены в следующих шагах.

    При использовании объектно-ориентированного интерфейса в директиве use вызывающей программы не нужно указывать список импортируемых имен функций. В этом случае взаимодействие с модулем CGI осуществляется через объект класса CGI, который нужно создать в вызывающей программе при помощи конструктора new(). Объектно-ориентированный вариант приведенного выше фрагмента выглядит следующим образом:

#! /usr/bin/perl
use CGI;
$query = new CGI;
print  $query->header(),
  $query->start_html('Пример формы'),
  $query->h1('Пример формы'),
.   .   .   .


   Замечание. Функции модуля CGI.pm являются методами класса CGI. Для того чтобы их можно было вызывать и как функции, и как методы, синтаксис не требует в качестве обязательного первого параметра указывать объект класса CGI. Поэтому в качестве функций к ним можно обращаться обычным образом, а как к объектам - только используя форму $object->method().

    На следующем шаге мы приведем пример CGI-сценария с использованием данного модуля.




Предыдущий шаг Содержание Следующий шаг