Erläuterung:
Die Subroutine HTML_DECODE_VARS liest die Variablen eines "get" oder "post" Requests ein und gibt diese als Hash-Refenz (sehr praktisch!) zurück.
In der beiliegenden Datei PL0006.pm ist die Programmierung als eigenes Perl-Modul ausgeführt, lauffähig sowohl unter Linux/Perl als auch Windows/Active Perl.
Subroutine:
sub HTML_DECODE_VARS
{
my (@pairs,$tmp,$item,$key,$content,$it,$temp,%fields);
if ($ENV{'REQUEST_METHOD'} eq 'GET')
{
# Name-Wert Paare aufspalten
@pairs = split(/&/, $ENV{'QUERY_STRING'});
}
elsif ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read(STDIN,$temp,$ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$temp);
}
foreach $item(@pairs)
{
($key,$content)=split(/=/,$item,2);
$content=~tr/+/ /;
$content=~s/%(..)/pack("c",hex($1))/ge;
$content=~s/\t/ /g;
$fields{$key}=$content;
}
return(\%fields);
} |
Aufruf:
1. Subroutine
$fields = &HTML_DECODE_VARS;
z.B.
$fields->{'Name'} # z.B. "Heinz"
Alle Variablen:
while (($key,$val) = each %{$fields})
{
# Tue etwas mit jedem Paar
}
Die Subroutine muss im Programmtext gespeichert sein.
2. Modul
A:Speichern Sie das Modul in Ihrem Perlverzeichnis unter
/usr/bin/perl/lib/EIGEN/Form/PL0006.pm (Linux)
c:\Perl\lib\EIGEN\Form\PL0006.pm (Windows)
B: Fügen Sie in den Kopf Ihres Perl-Programmes folgende Zeile ein:
use EIGEN::Form::PL0006 qw(HTML_DECODE_VARS);
C: So rufen Sie die Subroutine auf:
$fields = HTML_DECODE_VARS; # ohne "&" korrekt!
Die Subroutine muss nicht im Programmtext gespeichert sein.
|