PERL: БИБЛИОТЕКА ПРОГРАММИСТА



              

PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 664


# Сначала открыть и монопольно заблокировать файл

open(FH, "»/tmp/formlog")    or die "can't append to formlog: $!";
flock(FH, 2)           or die "can't flock formlog- $!";

# Используется процедурный интерфейс
use CGI qw(-.standard);
save_parameters(*FH);        #CGI::save

#  Используется объектный интерфейс
use CGI;

$query = CGI->new(); $query->save(*FH);

close(FH)                                             or die "can't close formlog;  $'";

Или форма сохраняется в канале — например, соединенном с процессом sendma.il:

use CGI qw(:standard);

open(MAIL,   "|/usr/lib/sendmail -ol -t")

or die "can't fork sendmail;  $!"; print MAIL «EOF; From;  $0 (your cgi script) To:   hisname\@hishost.com Subject;  mailed form submission

EOF


19.13. Сохранение формы в файле или канале   697

save_parameters(«MAIL);

close(MAIL)                                         or die "can't close sendmail:  $!";

Комментарий

Иногда данные формы сохраняются для последующего использования. Функция save_parameters и метод save модуля CGI.pm записывают параметры формы в от­крытый манипулятор. Манипулятор может быть связан с открытым файлом (же­лательно — открытым в режиме дополнения и заблокированным, как в решении) или каналом, другой конец которого подключен к почтовой программе.

Данные сохраняются в файле в виде пар переменная=значение, служебные сим­волы оформляются по правилам URL. Записи разделяются строками, состоящи­ми из единственного символа =. Как правило, чтение осуществляется методом CGI->new с аргументом-манипулятором, что обеспечивает автоматическое восста­новление служебных символов (см. ниже).

Если вы хотите перед сохранением включить в запрос дополнительную инфор­мацию, вызовите функцию рагат (или метод, если используется объектно-ориен­тированный интерфейс) с несколькими аргументами и установите нужное значе­ние (или значения) параметра формы. Например, текущее время и состояние окружения сохраняется следующим образом:




Содержание  Назад  Вперед