Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Unexpected CGI param behavior

by cLive ;-) (Parson)
on Jun 24, 2008 at 20:35 UTC ( #693824=note: print w/replies, xml ) Need Help??


in reply to Unexpected CGI param behavior

Hmmm. I guess my beef is with the fact that param() is another victim of "wantarray madness".

Ah well, live, learn and write explicit code to solve the issue...

Replies are listed 'Best First'.
Re^2: Unexpected CGI param behavior
by ikegami (Pope) on Jun 24, 2008 at 20:39 UTC

    You have it backwards, as far as I'm concerned. Your snippet would still fail without wantarray. Without wantarray, my $scalar = $cgi->param('foo'); would *also* fail.

    That's the case for every function that returns a list. Perl can't return a list in scalar context, so param must necessarily return something different in scalar context. wantarray simply helps return a meaningful value instead of junk.

    Since param returns a list, feel free to always call param in list context if you want to avoid the issue.

    my @values = $cgi->param('foo'); my ($first_value) = $cgi->param('foo'); my $first_value = ( $cgi->param('foo') )[0];

      "would *also* fail" - um, no it wouldn't, because it explicitly returns a scalar undef. I've tested it.

      Of course, what it would do is change an array assignment:

      # from @array=(); # to: @array=(undef);

      Which would be an unacceptable change to existing behavior (exists $array[0] value would change from empty string to 1).

        Not that situation, the situation where the field is present.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (11)
As of 2016-09-26 16:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Extraterrestrials haven't visited the Earth yet because:







    Results (485 votes). Check out past polls.