There may be a better way to do this, but I'm getting some strings like "; foo; bar; foobar; baz", which leads me to believe that there is a null byte being sent. I'm trying to perform s/^\;\s+// on the result of join inside the map function.
Update: Here's the effect I'm going for, but I didn't know if there was a way to write something as concise, but more efficient %params = map { $_ => do {my $t=join("; ", split("\0", $cgi->Vars->{$_}));$t=~s/^\;\s+//;$t;} } $cgi->param;