The CGI module should use '&' to separate parameters in query strings UNLESS you're using the -newstyle_urls pragma.
So you here's how to cheat if it is on and you don't want to take -newstyle_urls out of the use statement:
my $q = CGI->new(%parameters);
$CGI::USE_PARAM_SEMICOLONS = 0;
print $q->query_string;