from the CGI.pm docs in section "Mixing POST and URL Parameters".
-- clip
It is possible for a script to receive CGI parameters in the URL as well as in the fill-out
form by creating a form that POSTs to a URL containing a query string (a ``?'' mark
followed by arguments). The param() method will always return the contents of the
POSTed fill-out form, ignoring the URL's query string. To retrieve URL parameters,
call the url_param() method. Use it in the same way as param(). The main difference
is that it allows you to read the parameters, but not set them.
Under no circumstances will the contents of the URL query string interfere with
similarly-named CGI parameters in POSTed forms. If you try to mix a URL query
string with a form submitted with the GET method, the results will not be what you
expect.
-- end clip
HTH
keep the rudder amid ship and beware the odd typo