获取信息就是获取一个哈希%FORM。
#
# get info from web#
sub get_web_info
{
my %FROM;
my ($buffer, $pair) = ('','');
my ($name, $value) = ('','');
my @pairs = ();
my %FORM;
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
$data = $ENV{'QUERY_STRING'};
}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{
read(STDIN$buffer,$ENV{'CONTENT_LENGTH'});
}
foreach $pair (@pairs)
{
($name, $value) = split (/=/, $pair);
$value = &cov_web_char($value);
$FORM{$name} = $value;
}
return %FORM;
}
#
# Convert web chars to normal
sub cov_web_char($)
{
my $value = shift || '';
$value =~ s/%(..)/pack("c",hex($1))/ge;
$value=~s/ / /g;
$value=~s/%40/@/g;
$value=~s/%0D%0A/<br>/g;
$value=~s/%0d%0a/<br>/g;
$value=~s/%0a/<br>/g;
$value=~s/%3D/=/g;
$value=~s/%21/!/g;
$value=~s/%2B/+/g;
$value=~s/%2C/, /g;
$value=~s/%27/'/g;
$value=~s/%2F/\//g;
$value=~s/%3A/:/g;
$value=~s/%3B/;/g;
$value=~s/%3C/</g;
$value=~s/%28/(/g;
$value=~s/%29/)/g;
$value=~s/%23/#/g;
$value=~s/%3E/>/g;
$value=~s/%3F/?/g;
$value=~s/%5B/[/g;
$value=~s/%5D/]/g;
$value=~s/%5E/^/g;
$value=~s/%91/'/g;
$value=~s/%92/'/g;
$value=~s/%96/-/g;
$value=~s/%7B/{/g;
$value=~s/%7D/}/g;
$value=~s/%7E/~/g;
$value=~s/%26/&/g;
$value=~s/%93/'/g;
$value=~s/%94/'/g;
return $value;
}
my %FORM = &get_web_info;