in reply to Re: variable set to 0 ? 0 : 1
in thread variable set to 0 ? 0 : 1
Another pitfall may or may not be the == 0. Is it meant to test falseness? If so, it is not precise. Perl understands the notion of an undefined value, which is not the same as zero, so this test is broken if it means to check falseness.
Well, accutally.... it's true that undefined is not the "same" as zero, but they are numericly equal. As you can see, it generates a warning, but it does evaluate to true...
laptop:~> perl -wle 'print "TrUe" if undef == 0' Use of uninitialized value in numeric eq (==) at -e line 1. TrUe
A better example as to why you wouldn't want to use "$status == 0" as a test for truth is non numeric strings. the string "foo" is true, but it is numericly equal to 0...
laptop:~> perl -le 'print "TrUe" if "foo" == 0' TrUe laptop:~> perl -le 'print "TrUe" if "foo"' TrUe
|
---|