use strict; use warnings; use Data::Dumper qw(Dumper); use CGI; #or CGI::Simple, if you prefer my $info = "/?foo=Zoo&foo=aha"; my $q = CGI->new((split /\?/, $info)[1]); #again, replace with CGI::Simple if desired #and now... my @foos = $q->param("foo"); #or my %params = map { $_ => [ $q->param($_) ] } $q->param(); print Dumper \%params; __END__ $VAR1 = { 'foo' => [ 'Zoo', 'aha' ] };