Пример сценария с использованием модуля 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 можно осуществлять двумя способами:

  • с использованием позиционных параметров
       print textfield('regname','начальное значение',50,80);
    
  • с использованием именованных параметров
       print textfield(-name=>'regname',
         -default=>'начальное значение',
         -size=>50,
         -maxlength=>80) ;
    

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий