Модуль CGI предназначен для упрощения создания HTML документов скриптом
написанным на Perl'е. Модуль CGI подключается к вашему скрипту на perl, так же,
как и другие модули:
<PRE>
use CGI;
</PRE>
<P>Есть два способа использования модуля CGI: это объектно-ориентированный стиль
и как набор функций. при использовании объектно-ориентированного стиля, вы
создаете один или несколько объектов, а потом используете их методы для
формирования HTML-страницы. Вот пример использования объектно-ориентированного
стиля:
<PRE>
#!/usr/bin/perl
use CGI; # Подключить модуль CGI
$q = new CGI; # Создать новый объект CGI
print $q->header
# Вызов метода header, который печатает HTTP заголовок
# это вместо print "Content-Type: text/html\n\n"
$q->start_html('Hello World')
# Печатаем начало документа (тэги <HEAD> и <BODY>),
# при этом вставляем строчку <TITLE>Hello World</TITLE>
$q->h1('Hello World')
# Печатаем заголовок первого уровня
$q->end_html;
# Печатаем конец документа (</BODY> </HTML>)
</PRE>
<P>Использовать CGI как набор функций, еще проще, в этом случае, вам не нужно
создавать новый объект, вы просто используете функции CGI. Следующий пример
демонстрирует использование CGI как набор функций, в результате его выполнения
будет выдана страница аналогичная странице выдаваемой в предыдущем примере.
<PRE>
#!/usr/bin/perl
use CGI qw/:standard/; # Загружаем стандартные процедуры CGI
print header
# Печатаем HTTP заголовок
# это вместо print "Content-Type: text/html\n\n"
start_html('Hello World')
# Печатаем начало документа (тэги <HEAD> и <BODY>),
# при этом вставляем строчку <TITLE>Hello World</TITLE>
h1('Hello World')
# Печатаем заголовок первого уровня
end_html;
# Печатаем конец документа (</BODY> </HTML>)
</PRE>
<P>Синтаксис функций в CGI таков:
<PRE>
name({-atr=>value, -atr2=>value2}, 'text')
</PRE>
<UL>
<LI>name - это имя функции, которое как правило совпадает с именем интересующего
тэга. О тэгах, имена которых не совпадают с именами соответствующих функций,
речь пойдет дальше.
<LI>atr и atr2 - это имена атрибутов данного тэга.
<LI>value и value2 - это значения тэгов.
<LI>text - это текст находящийся между открывающим и закрывающим тэгами.
</UL>
<P>Любой из указанных параметров может опускаться. Рассмотрим все изложенное на
примерах.
<PRE>
print h1() # Печатает <H1>
print h1('Hello','world'); # Печатает <H1>Hello world</H1>
print h1({-align=>left}); # Печатает <H1 ALIGN="LEFT">
print h1({-align=>left},'Hello'); # Печатает <H1 ALIGN="LEFT">Hello</H1>
</PRE>
<P>Некоторые функции в CGI используются парами, подобно закрывающим и
открывающим тэгам в HTML, например:
<PRE>
start_html и end_html (<HTML><HTML/>)
start_table и end_table (<TABLE></TABLE>)
start_ul и end_ul (<UL></UL>)
start_form и end_form (<FORM></FORM>)
</PRE>
<P>Вы наверное уже успели заметить, что названия функций аналогичны названиям
тэгов HTML. В этом и заключается простота в освоении CGI, достаточно знать HTML,
чтобы через 30 мин. свободно использовать CGI. Вот список функций, имена которых
не совпадают с именами тэгов:
<PRE>
print redirect('http://www.perl.ru/'); # Переадресовать браузер к другой
странице.
# Пример известной нам функции выполняющей функции сразу нескольких тэгов
print start_html(-title=>'Hello World', # Заголовок документа
-author=>'flp@mail.ru', # Автор
-meta=>{'keywords'=>'world hello flp', # Ключевые слова
'copyright'=>'copyright 2000 Philip Koryaka'}, # Авторские права
-style=>{'src'=>'/styles/style1.css'}, # Стиль для документа
-BGCOLOR=>'blue'); # BGCOLOR для документа
print header(-Refresh=>'10; URL=http://www.perl.ru', # Обновление документа
-cookie=>$cookie, # Устанавливаем Cookie
-type=>'image/gif', # Тип документа
-expires=>'+3d'); # Срок годности
# Следующий тэг создает список радио-кнопок (аналог <INPUT TYPE=RADIO>):
print radio_group('name'=>'OS',
'values'=>['Unix','Windows','Macintosh'],
'default'=>'Unix');
# Следующий тэг создает поле ввода пароля (аналог <INPUT TYPE=PASSWORD>):
password_field(-name=>'secret',
-value=>'starting value',
-size=>50,
-maxlength=>80);
# Аналогично данной функции используются функция file_field
</PRE>
<P>Сильной стороной CGI является использование параметров, передаваемых скрипту.
Функция param() взращает значение любого из параметров.
<P>Вызовем скрипт script.cgi?name=bob&lang=en&opt=1&opt=4&opt=8
<PRE>
# Переменной $a присваиваем значение параметра name ($a=bob)
$a = param('name');
# Переменной $a присваиваем значение параметра lang ($a=en)
$a = param('lang');
# Массиву @a присваиваем значения параметра opt (@a[0]=1; @a[1]=4; @a[2]=8;)
@a = param('opt'); |