In the past, for calling another script, I generate the cgi object with the params I need and call self_url, then I substitute the new script url for the current one.
my $newscript = "http://somewhereelse.com/cgi-bin/somescript.pl?";
my $url = $q->self_url;
$url =~s/^.*?\?//; # Remove url portion
$newscript.=$url;