Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Unexpected CGI param behavior

by cLive ;-) (Prior)
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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://693824]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2018-06-23 22:29 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.