i think that you only want to use POST method when (a) you don't want the browser user to see the parameters in the url (b) you're sending a fair amount of data with the url, i.e. more than url length allows.
btw you can get around the parameter issue (a) by using an iframe.
anyway...what i'm getting to is that you can simply append your parameters to the url, for the next cgi script to pick up as per usual via param method. e.g.
$next_url = "http://blabla.com/cgi/script.cgi?";
$next_url .= "city=" . $city if($city);
...
$next_url =~ s/\?$//; # remove question mark if no parameters added
+to next_url
funny thing that you're trying to move away from javascript though...as a decent ajax form can check all fields, provide feedback, and post the data, all without a reload...and form reloads are continuity disruptive and a general pain for users to use.
generally people are moving to ajax rather than away from it...as it has markedly improved the user experience
the hardest line to type correctly is: stty erase ^H