params = $s END sub parse { my $temp = "@_"; my @pairs = split('&', $temp); my($par, $val); foreach (@pairs) { ($par, $val) = split('='); $par = unescape($par); $val = unescape($val); if ($params{$par}) { $params{$par} .= "$;$val"; } else { $params{$par} = $val; } } } sub unescape { my $temp = "@_"; $temp =~ tr/+/ /; # translate + to space $temp =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; return $temp; }