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
|