Глава 19: СGІ-программирование.
19.5 Как сократить объем вводимого текста
Вводить все равно приходится очень много, но в CGI.pm есть множество удобных функций, упрощающих набор. Каждая из этих функций возвращает строковое значение, которое вы будете выводить. Например, header() возвращает строковое значение, содержащее строку Content-type с последующей пустой строкой, start_html (строка ) возвращает указанную строку как HTML-титул (название документа), hi(строка) возвращает указанную строку как HTML-заголовок первого уровня, а р(строка) возвращает указанную строку как новый HTML-абзац.
Мы могли бы перечислить все эти функции в списке, прилагаемом к оператору use, но такой список разросся бы до небывалых размеров. В CGI.pm, как и во многих других модулях, имеются так называемые директивы импорта — метки, которые обозначают группы импортируемых функций. Вам нужно лишь поставить желаемые директивы (каждая из которых начинается двоеточием) в начале своего списка импорта. В модуле CGI.pm имеются такие директивы:
:cgi - Импортировать все методы обработки аргументов, например param().
:form - Импортировать все методы создания заполняемых форм, например text-field().
:html2 - Импортировать все методы, которые генерируют стандартные элементы HTML 2.0.
:htmi3 - Импортировать все методы, которые генерируют элементы, предложенные в HTML 3.0 (такие как <table>, <super> и <sub>).
:netscape - Импортировать все методы, которые генерируют расширения HTML, характерные для Netscape.
:shortcuts - Импортировать все сокращения, генерируемые HTML (т.е. "html2" + "html3" + "netscape").
:standard - Импортировать "стандартные" возможности: "html2", "form" и "cgi".
:all - Импортировать все имеющиеся методы. Полный список приведен в модуле CGI.pm, где определяется переменная %tags.
Мы будем использовать только директиву :standard. (Подробная информация об импортировании функций и переменных из модулей приведена в главе 7 книги Programming Perl, а также на man-странице Exporter 3).}
Вот как выглядит наша программа со всеми сокращениями, которые используются в CGI.pm:
#!/usr/local/bin/perl -w
# cgi-bin/ice_cream
# программа ответа на форму о любимом
# сорте мороженого (версия 2)
use CGI qw(:standard);
print header();
print start_html("Hello World"), hi("Hello World");
my $favorite = param("flavor");
print p("Your favorite flavor is $favorite.");
print end_html();
Видите, насколько это проще? Вам не нужно беспокоиться о декодировании данных формы, о заголовках и HTML-тексте, если вы этого не хотите.