Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://693824]
help
Chatterbox?
[Dumu]: hello jedikaiti
[Dumu]: got it. Anyway. Perl question. Can you use binmode more than once with an open filehandle to read a file first in binary mode, then in utf8 mode?
[ambrus]: Dumu: you can use binmode multiple times, but mostly at the start before you read things. it would be strange to change the io layers after you've already read things, and might not work too well.
[ambrus]: Dumu: why would you want to read the same file both in binary mode and utf8 mode?
[Corion]: Dumu: Yes, but switching needs to be done with caution, as you might read half an UTF-8 character in binary mode, and then switch to utf8 mode...
[Corion]: Personally, I would do the decoding of data in the program and not in the filehandle
[Corion]: ambrus: Maybe a record-based file where some data is strings encoded as utf8

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (8)
As of 2017-11-20 17:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (290 votes). Check out past polls.

    Notices?