Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hey wise ones. Im having problems with the CGI.pm module
It seems for one reason or another the CGI module cannot decode both sets of forms (GET & POST) at the same time. If a form post is sent through along with a query string the query string is dropped.
Example (HTML File)
<form action="formpost.cgi?m=hello" method="post"> <textarea name="big"></textarea> <input type="hidden" name="large" value=1> <input type="hidden" name="transmit" value=1> <input type="submit" value="1"> </form>

Example (Perl Code)
#!/usr/bin/perl use CGI; $form = new CGI; print "Content-type: text/html\n\n"; print $form->param("big"); print $form->param("m");
Any ideas?

Replies are listed 'Best First'.
Re: Problems with CGI.pm
by merlyn (Sage) on Jul 15, 2005 at 15:42 UTC
    That behavior is expected, and documented.

    Perhaps you missed this in the docs (you did consult the docs, correct?):

    MIXING POST AND URL PARAMETERS $color = $query->url_param('color'); It is possible for a script to receive CGI parameters in the UR +L 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 fi +ll-out form, ignoring the URL's query string. To retrieve URL paramet +ers, 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, b +ut not set them. Under no circumstances will the contents of the URL query strin +g inter- fere with similarly-named CGI parameters in POSTed forms. If y +ou try to mix a URL query string with a form submitted with the GET me +thod, the results will not be what you expect.

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

Re: Problems with CGI.pm
by BUU (Prior) on Jul 15, 2005 at 22:27 UTC