diff --git a/lib/Plack/Request.pm b/lib/Plack/Request.pm index 8d3d04508..64557b173 100644 --- a/lib/Plack/Request.pm +++ b/lib/Plack/Request.pm @@ -88,7 +88,7 @@ sub _parse_query { if (defined $query_string) { @query = map { s/\+/ /g; URI::Escape::uri_unescape($_) } - map { /=/ ? split(/=/, $_, 2) : ($_ => '')} + map { '' eq $_ ? () : /=/ ? split(/=/, $_, 2) : ($_ => '') } split(/[&;]/, $query_string); } diff --git a/t/Plack-Request/params.t b/t/Plack-Request/params.t index 6835e2359..9d9e52d63 100644 --- a/t/Plack-Request/params.t +++ b/t/Plack-Request/params.t @@ -21,6 +21,8 @@ is $req->param('foo'), "baz"; is_deeply [ $req->param('foo') ] , [ qw(bar baz) ]; is_deeply [ sort $req->param ], [ 'bar', 'foo' ]; +my $req = Plack::Request->new({ QUERY_STRING => "&&foo=bar" }); +is_deeply $req->parameters, { foo => "bar" }; done_testing;