Шаг 158.
Пример сценария с использованием модуля CGI.pm

    На этом шаге мы приведем текст сценария с использованием данного модуля.

    Модуль CGI, как мы отметили на предыдущем шаге, содержит большой набор методов. Документация, входящая в состав самого модуля, достаточно подробно описывает его компоненты. Чтобы получить представление о работе модуля CGI, создадим с его помощью небольшой сценарий. Для этого вернемся к рассмотрению формы из примера 150 шага.

    Будем для определенности использовать традиционный процедурно-ориентированный интерфейс. Рассмотрим следующий сценарий.

#!/usr/bin/perl
use CGI qw(:standard);
print header;
print start_html('Пример формы'),
h2('Регистрационная страница Клуба любителей фантастики'),
'Заполнив анкету, вы сможете пользоваться нашей электронной 
библиотекой.',
br,
start_form,
"Введите регистрационное имя:",textfield('regname'),
p,
"Введите пароль: ", password_field(-name=>'password1',
-maxlength=>'8'),
p,
"Подтвердите пароль: ", password_field(-name=>'password2',
-maxlength=>'8'),
p, 
"Ваш возраст",
p,
radio_group(-name=>'age',
   -value=>['lt20','20_30','30_50','gt50'],
   -default=>'lt20',
   -labels=>{'lt20'=>'до 20','20_30'=>'20-30',
             '30_50'=>'30-50','gt50'=>'старше 50'}),
br,br,
"На каких языках читаете:",
checkbox_group(-name=>'language',
    -values=>
     ['русский','английский','французский','немецкий'],
    -defaults=>['русский']),
br,br,
"Какой формат данных является для Вас предпочтительным ", 
br, 
popup_menu(-name=>'type',
    -values=>['Plain text','PostScript','PDF']),
br,br,
"Ваши любимые авторы:",
br,
textarea(-name=>'wish', -cols=>40, -rows=>3),
br,
submit (-name=>'OK'), reset (-name=>'Отменить'),
end_form,
hr;

if (param()) 
{ 
  print
   "Ваше имя: ",em(param('regname')),
   p,
   "Ваш возраст: ", em(param('age')),
   p,
   "Вы читаете на языках: ",em(join(", ",param('language'))),
   p,
   "Предпочтительный формат данных для Вас: ",em(param('type')),
   p,
   "Ваши любимые авторы: ", em(join(", ",param('wish'))), 
   hr;
}
print end_html;

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

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

    На следующем шаге мы рассмотрим функции, использованные в сценарии.




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