Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re^3: Unwanted parameter when executing CGI scripts

by tobyink (Abbot)
on Jan 05, 2013 at 14:00 UTC ( #1011788=note: print w/ replies, xml ) Need Help??

in reply to Re^2: Unwanted parameter when executing CGI scripts
in thread [SOLVED] Unwanted parameter when executing CGI scripts

You needn't test for whether $ENV{QUERY_STRING} is defined or not, because undefined things automatically have zero length.

" then would generate a parameter "keywords=Test", and we would remove that parameter accordingly. But that would be only the half of the way: I think that "Test" in that case should be a KEY in the parameter list which has an empty (or undefined) value."

Then you could try something like:

for ($ENV{QUERY_STRING}) { $cgi->{param}{delete $cgi->{param}{keywords}} = "" if length && !/[&=]/; }
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Comment on Re^3: Unwanted parameter when executing CGI scripts
Select or Download Code
Replies are listed 'Best First'.
Re^4: Unwanted parameter when executing CGI scripts
by Nocturnus (Sexton) on Jan 05, 2013 at 16:30 UTC

    Thank you very much for your answer, but I just haven't got it yet. Please forgive me if I'm too stupid, but I think you are testing if the query string's length is >0, and your code only gets executed if this condition is true.

    But when calling the script without any parameters, the length of the query string is 0, and that evaluates to false, so the whole line doesn't get executed.

    Please correct me if I am wrong.



      Indeed, the whole line doesn't get executed. But the line doesn't need to be executed because there's no query string. Thus there will be no keywords; nothing to clean up; no work needs to be done.

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

        But that was exactly my problem: If I called


        (i.e. without any parameters and without query string), behaved like if I had called


        I should have mentioned that my application in this case needed to get the parameters from the query string only (GET parameters) and that it should not get the POST parameters. Thus, I was using

        $q -> url_params

        instead of

        $q -> param

        Perhaps that's the reason for the misbehavior. Furthermore, I have seen some more misbehavior (see post below), so I dumped; I am now parsing the query string myself.



Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1011788]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (5)
As of 2015-10-04 13:54 GMT
Find Nodes?
    Voting Booth?

    Does Humor Belong in Programming?

    Results (103 votes), past polls