SPUG: "Boolean" return values
cmeyer at helvella.org
Mon Oct 13 16:06:10 PDT 2008
On Mon, Oct 13, 2008 at 03:58:22PM -0700, craig at seaperl.com wrote:
> The reason that I've always heard was that in an IF condition you could do
> TRUE if the condition returned a positive number and would be FALSE if it
> was a numeric 0 or a string. Perl does that sort of conversion so that if
> you have a string of "345" that it could be evaluated as a NUMERIC 345 and
> counting as TRUE but that something like "345r2" would be evaluated as a
> string and be considered FALSE.
That's not quite true:
perl -le'print "345r2" ? "true" : "false"'
Truth and Falsehood
The number 0, the strings '0' and '', the empty list "()", and "undef" are all false in a boolean context. All
other values are true. Negation of a true value by "!" or "not" returns a special false value. When evaluated
as a string it is treated as '', but as a number, it is treated as 0.
More information about the spug-list