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
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
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: if ($2) behaves differently than if (defined $2)
by repellent (Priest) on Apr 16, 2008 at 16:57 UTC |
In Section
Seekers of Perl Wisdom