use URI;
use Data::Dumper;
my $uri = URI->new('http://localhost/foo.cgi?foo=bar&foo=baz');
my %form_var = $uri->query_form;
print Dumper \%form_var;
####
map { s/\+/ /g; uri_unescape($_) }
map { /=/ ? split(/=/, $_, 2) : ($_ => '')} split(/&/, $old);
####
my %hash;
for my $pair (split /&/, $old) {
my ($k,$v) = map {
s/\+/ /g;
uri_unescape($_)
} split /=/, $pair, 2;
if (exists $hash{$k}) {
if (ref $hash{$k}) {
push @{$hash{$k}}, $v;
} else {
$hash{$k} = [$hash{$k},$v];
}
} else {
$hash{$k} = $v;
}
}
return %hash;