Библиотека подпрограмм для работы с CGI-скриптами

# Подпрограмма формирования начального блока HTML-кода
sub start
{
my $title = shift(@_);
$title = 'Untitled document' if(!($title));
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
? \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n";
print "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"ru\"
? xml:lang=\"ru\">\n\n";
print "<head>\n";
print "<title>$title</title>\n";
print "</head>\n\n";
print "<body>\n";
print "<h1>$title</h1>\n";
}

# Подпрограмма формирования конечного блока HTML-кода и завершения работы
sub stop
{
print "</body>\n\n";
print "</html>\n";
exit(0);
}

# Подпрограмма получения строки запроса, переданного методом GET
sub recvquery_get
{
my $query = $ENV{'QUERY_STRING'};
if ($query ne '')
{
&parse_query($query);
}
}

# Подпрограмма получения строки запроса, переданного методом POST
sub recvquery_post
{
my $query = "";
my $content_length = $ENV{'CONTENT_LENGTH'};
if($content_length)
{
my $buf;

while (sysread(STDIN, $buf, 1024))
{
$query .= $buf;
}
}

if ($query ne '')
{
&parse_query($query);
}
}

# Подпрограмма разбора строки запроса
sub parse_query
{
my $string = shift(@_);
my @query = split('&', $string);
foreach $element(@query)
{
my @fields = split('=', $element);
$fields[0] = decode($fields[0]);
$fields[1] = decode($fields[1]);
$userdata{$fields[0]} = $fields[1];
}
}

# Подпрограмма декодирования закодированных последовательностей
sub decode
{
my $string = shift(@_);
$string =~ s/\+/ /g;
$string =~ s/%([0-9A-F]{2})/pack('C', hex($1))/eg;
return $string;
}

return 1; # Если в подключаемом файле нет ни одного оператора
# вне подпрограмм, необходимо вернуть значение "истина"
Полагаю, читателю уже не требуются разъяснения по коду этой библиотеки. В электронном виде она представлена в виде файла _stdlib.pl на прилагаемом к этой книге компакт-диске в директории \examples\05\01.


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.