CGI will get them, but you have to use two different ways to access them. From the documentation: MIXING POST AND URL PARAMETERS
$color = url_param('color');
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.
Personally, I prefer CGI::Lite for form parsing (as I don't use the HTML generation from CGI), and it has a function that looks like it's made for situations like this: parse_form_data
This will handle the following types of requests: GET, HEAD and POST. By default, CGI::Lite uses the environment variable REQUEST_METHOD to determine the manner in which the query/form information should be decoded. However, as of v1.8, you are allowed to pass a valid request method to this function to force CGI::Lite to decode the information in a specific manner.
| [reply] [d/l] [select] |