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

Re^2: if ($2) behaves differently than if (defined $2)

by radiantmatrix (Parson)
on Apr 15, 2008 at 18:09 UTC ( #680611=note: print w/ replies, xml ) Need Help??


in reply to Re: if ($2) behaves differently than if (defined $2)
in thread if ($2) behaves differently than if (defined $2)

That's a choice quote. Put another way, the OP is suffering from some confusion that if (defined $x) is intended to be the same as if ($x). In fact, they serve different purposes.

defined tests whether a variable has any value -- a false value is still a value.

Short demonstration code:

my $x; demonstrate(); $x = 1; demonstrate(); $x = 0; demonstrate(); sub demonstrate { if (defined $x) { print "\$x has value $x\n"; } else { print "\$x is undefined\n"; } if ($x) { print "\$x evaluates as TRUE\n"; } else { print "\$x evaluates as FALSE\n"; } print "\n"; }

This produces the following output:

$x is undefined $x evaluates as FALSE $x has value 1 $x evaluates as TRUE $x has value 0 $x evaluates as FALSE
<radiant.matrix>
Ramblings and references
The Code that can be seen is not the true Code
I haven't found a problem yet that can't be solved by a well-placed trebuchet


Comment on Re^2: if ($2) behaves differently than if (defined $2)
Select or Download Code
Re^3: if ($2) behaves differently than if (defined $2)
by repellent (Priest) on Apr 16, 2008 at 16:57 UTC
    Apparently, in Lisp, this is referred to as a semi-predicate problem.

    The very fact that you are using
    if ($2)
    followed by
    $price = $1 . "." . $2
    shows that you are using $2 as a semi-predicate, i.e. to show validity and to hold value.

    Next time, whenever you use if ($var), you should consider if $var needs to be a full-predicate, i.e. strictly a boolean to only show true-or-false.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2015-07-04 20:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls