The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
use WWW::Form::UrlEncoded qw/parse_urlencoded_arrayref/;
use JSON;
while (<DATA>) {
chomp;
next unless $_;
my ($s,$t) = split /\s+=>\s/, $_,2;
$s =~ s/'//g;
my $param = parse_urlencoded_arrayref($s);
is JSON::encode_json($param), $t, $s;
}
done_testing();
__DATA__
'a=b&c=d' => ["a","b","c","d"]
'a=b;c=d' => ["a","b","c","d"]
'a=1&b=2;c=3' => ["a","1","b","2","c","3"]
'a==b&c==d' => ["a","=b","c","=d"]
'a=b& c=d' => ["a","b","c","d"]
'a=b; c=d' => ["a","b","c","d"]
'a=b; c =d' => ["a","b","c ","d"]
'a=b;c= d ' => ["a","b","c"," d "]
'a=b&+c=d' => ["a","b"," c","d"]
'a=b&+c+=d' => ["a","b"," c ","d"]
'a=b&c=+d+' => ["a","b","c"," d "]
'a=b&%20c=d' => ["a","b"," c","d"]
'a=b&%20c%20=d' => ["a","b"," c ","d"]
'a=b&c=%20d%20' => ["a","b","c"," d "]
'a&c=d' => ["a","","c","d"]
'a=b&=d' => ["a","b","","d"]
'a=b&=' => ["a","b","",""]
'&' => ["","","",""]
'=' => ["",""]
'' => []