Модуль CGI.pm

Модуль CGI предназначен для упрощения создания HTML документов скриптом написанным на Perl’е. Модуль CGI подключается к вашему скрипту на perl, так же, как и другие модули:

use CGI;

Есть два способа использования модуля CGI: это объектно-ориентированный стиль и как набор функций. при использовании объектно-ориентированного стиля, вы создаете один или несколько объектов, а потом используете их методы для формирования HTML-страницы. Вот пример использования объектно-ориентированного стиля:

#!/usr/bin/perl 

use CGI; # Подключить модуль CGI 

$q = new CGI; # Создать новый объект CGI 

print $q->header 

# Вызов метода header, который печатает HTTP заголовок 

# это вместо print "Content-Type: text/htmlnn" 

$q->start_html('Hello World') 

# Печатаем начало документа (тэги <HEAD> и <BODY>), 

# при этом вставляем строчку <TITLE>Hello World</TITLE> 

$q->h1('Hello World') 

# Печатаем заголовок первого уровня 

$q->end_html; 

# Печатаем конец документа (</BODY> </HTML>)

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

#!/usr/bin/perl 

use CGI qw/:standard/; # Загружаем стандартные процедуры CGI 

print header 

# Печатаем HTTP заголовок 

# это вместо print "Content-Type: text/htmlnn" 

start_html('Hello World') 

# Печатаем начало документа (тэги <HEAD> и <BODY>), 

# при этом вставляем строчку <TITLE>Hello World</TITLE> 

h1('Hello World') 

# Печатаем заголовок первого уровня 

end_html; 

# Печатаем конец документа (</BODY> </HTML>)

Синтаксис функций в CGI таков:

name({-atr=>value, -atr2=>value2}, 'text')

name — это имя функции, которое как правило совпадает с именем интересующего тэга. О тэгах, имена которых не совпадают с именами соответствующих функций, речь пойдет дальше.

atr и atr2 — это имена атрибутов данного тэга.

value и value2 — это значения тэгов.

text — это текст находящийся между открывающим и закрывающим тэгами.

Любой из указанных параметров может опускаться. Рассмотрим все изложенное на примерах.

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>

Некоторые функции в CGI используются парами, подобно закрывающим и открывающим тэгам в HTML, например:

start_html и end_html (<HTML><HTML/>) 

start_table и end_table (<TABLE></TABLE>) 

start_ul и end_ul (<UL></UL>) 

start_form и end_form (<FORM></FORM>)

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

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

Сильной стороной CGI является использование параметров, передаваемых скрипту. Функция param() взращает значение любого из параметров.

Вызовем скрипт script.cgi?name=bob〈=en&opt=1&opt=4&opt=8

# Переменной $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');