Первая строка сценария, оформленная в виде комментария, указывает на физическое размещение интерпретатора языка Perl. Остальные строки фактически формируют ответ веб-сервера:
Во второй строке в выходной поток передается поле Content-type заголовка ответа сервера, и в конце вставляется пустая строка, отделяющая заголовок от тела ответа сервера.
В последней строке помещается содержимое тела ответа сервера.
В результат выполнения сценария данного сценария получим следующую страницу:
В следующем примере будет рассмотрен сценарий, считывающий и обрабатывающий данные, полученные веб- сервером из запроса клиента. Исходные данные должны вводиться пользователем в поля формы веб-страницы, загруженной в веб-браузере.
#!c:/perl/bin/perl
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
$method = $ENV{'REQUEST_METHOD'};
if ($method eq 'POST')
{
$length = $ENV{'CONTENT_LENGTH'};
read(STDIN, $qstr, $length);
}
else
{
if ($method eq 'GET') { $qstr = $ENV{'QUERY_STRING'}; }
else
{
print "Method ".$method." is not supported
</BODY></HTML>";
#exit(0);
}
}
print "<P>Метод = ", $method;
|
|
print "<p>Строка параметров: <p>\n";
print $qstr;
# обратная перекодировка
$qstr =~ tr/+/ /;
$qstr =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# выделение списка параметров
print "<p>А теперь отдельные поля:<p>";
@pars = split(/&/, $qstr);
# определение размера массива
$n_pars = @pars;
# выделение имени и значения для каждого параметра
for ($i=0; $i<$n_pars; $i++)
{
# выделение списка из двух переменных $name и $value
($name, $value) = split(/=/, $pars[$i]);
print "Параметр <B>", $name, "</B> равен <I>",
$value, "</I><br>";
}
print "</HTML></BODY>\n";