Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: check for undefined param name

by CukiMnstr (Deacon)
on Apr 02, 2002 at 21:40 UTC ( [id://156132]=note: print w/replies, xml ) Need Help??


in reply to check for undefined param name

and I've also read that it will return a null '' but I haven't gotten that to work either.

a null '' is actually undef, it equals to false, so

unless ($query->param('loc')) { # print error mesage or whatever. }
would work, but

if ($query->param('loc) eq '') { ... }

does not work...

you might want to take a look at What is truth? here at the monastery for an explanation of "truth" in perl, as there are many 'gotchas' in handling truth in perl ;) (for example, in the code above, if 0 was a valid value for the loc parameter, the code would print the error message, even if we didn't want that.)

hope this helps,

Replies are listed 'Best First'.
Re^2: check for undefined param name
by tadman (Prior) on Apr 02, 2002 at 23:12 UTC
    As was pointed out, it might be better to check using length instead of defined. Remember that zero is false, so a straight logic check will not tell you if it is supplied but zero. Consider:
    unless ($query->param('is_a_chicken')) # Fails on 0 { print "You must choose an option.<BR>\n"; }
    As your appropriate values might be 0 or 1, this is going to fail on a valid submission. Better to have:
    unless (length $query->param('is_a_chicken')) { print "You must choose an option.<BR>\n"; }
    Though length does tend to complain about being forced to deal with undefined strings. This will lead to the more verbose but equally more robust version:
    my $is_a_chicken = $query->param('is_a_chicken'); unless (defined ($is_a_chicken) && length ($is_a_chicken)) { print "You must choose an option.<BR>\n"; }
    Of course, if you were doing this sort of thing all the time you could make a quick helper method to do it quickly:
    sub provided { return defined($_[0]) && length ($_[0]); }
    Which would simplify as follows:
    unless (provided ($query->param('is_a_chicken')) { print "You must choose an option.<BR>\n"; }

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (7)
As of 2024-03-28 11:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found