Передача параметров через CGI
Для передачи параметров в CGI-программы (точнее, в большинство CGI-программ) никакие формы не нужны. Чтобы убедиться в этом, замените URL наhttp://www.ГДЕ.org/cgi-bin/ice_cream?flavor=mint
Когда Вы "нацеливаете" свой браузер на этот URL, браузер не только просит Web-сервер вызвать программу ice_cream , но и передает в нее строку flavor=mint . Теперь дело программы — прочитать данную строку-аргумент и разобрать ее. Эта задача не так проста, как кажется. Многие программы пытаются решить ее и разобрать запрос самостоятельно, но большинство "самодельных" алгоритмов время от времени отказывают. Учитывая то, насколько сложно найти правильное решение такой задачи для всех возможных случаев, Вам, наверное, не следует писать код самим, особенно при наличии отличных готовых модулей, которые выполняют этот хитрый синтаксический анализ за Вас.
К Вашим услугам — модуль CGI.pm, который всегда разбирает входящий CGI-запрос правильно. Чтобы вставить этот модуль в свою программу, просто напишите
use CGI;
где-нибудь в начале программы.
Оператор use похож на оператор #include языка С тем, что в процессе компиляции извлекает код из другого файла. Но он допускает также использование необязательных аргументов, показывающих, к каким функциям и переменным из этого модуля Вы хотели бы обращаться. Поместите их в список, следующий за именем модуля в операторе use ,— и Вы сможете обращаться к указанным функциям и переменным так, как будто они Ваши собственные.
В данном случае все, что нам нужно использовать из модуля CGI.pm — это функция param() .
Если аргументы не указаны, функция param() возвращает список всех полей, имевшихся в HTML-форме, на которую отвечает данный CGI-сценарий. (В текущем примере это поле flavor , а в общем случае — список всех имен, содержащихся в строках имя=значение переданной формы.) Если указан аргумент, обозначающий поле, то param() возвращает значение (или значения), связанные с этим полем. Следовательно, param ("flavor") возвращает mint , потому что в конце URL мы передали ?flavor=mint .
Несмотря на то что в нашем списке для оператора use имеется всего один элемент, мы будем использовать запись qw() . Благодаря этому нам будет легче впоследствии раскрыть этот список.
#!/usr/local/bin/perl5 -w
use CGI qw(:param);
print <<END_of_Start;
Content-type: text/html
<HTML>
<HEAD>
<TITLE>Здравствуй, Мир!</TITLE>
</HEAD>
<BODY>
<H1>Привет, земляне!</H1>
END_of_Start
my $favorite = param("flavor");
print "<P>Ваш любимый вкус - $favorite.";
print <<All_Done;
</BODY>
</HTML>
All_Done
<< Предыдущая страница Содержание Наверх Следующая страница >>
2000,
"Язык Perl. Создание CGI-скриптов на Perl."
. Использованы материалы книг:
Маслов
В.В.
Основы программирования на языке Perl
- М.: Радио и связь, Горячая линия - Телеком. 1999. - 144 c.: - ISBN
5-256-01356-4; Рэндал Шварц, Том Кристиансен
Изучаем Perl
: Пер. с англ. - К.:
Издательская группа BHV, 1998 - 320 c.: - ISBN 5-7315-0031-2.
Все пожелания - авторам:
Алексею Машьянову
,
Александру Яковлеву
.