On Mon, Oct 15, 2007 at 01:27:26PM -0700, Michael Barto wrote: > As both Java and Javascript both have a 'true' and 'false' or Boolean > data type, is there any interest in evolution of Perl to have a true > Boolean. Or what is the preferred method to do this in Perl.
The place to discuss this is the perl5-porters mailing list, not an obscure platform-specific mailing list. And the answer is no. Because we already have a real Boolean. We have boolean *context*. An operator like ?: forces its first operand to be evaluated in boolean context: $value ? 'true' : 'false' That first operand can, of course, be a complex expression, the end result of which is evaluated in boolean context: cheezburger->{$cutecat}->() ? print "LOL!" : print "OH NOES!" We also don't have int or float or a numeric type (the internals do, but Perl the language doesn't) - we have numeric context. Consider this: $ perl -e 'print "foo\n" if "2abc" == "2def"' The == operator forces both its operands to be evaulated in numeric context before comparing them. As numbers, 2abc and 2def are both just plain ol' 2, so the == returns true and we print. If we change it to this: $ perl -e 'print "foo\n" if "2abc" eq "2def"' then the eq operator evaluates its operands in string context, where 2abc and 2def most definitely aren't the same. > The "C" programmers want me to use "0"'s and "1"'s. Seems reasonable. Those do evaluate to false and true in perl. Perl's comparison operators return 1 for true and the empty string for false. In numeric context that's the same as returning 1 and 0 because: '' == 0 -- David Cantrell | Hero of the Information Age When a man is tired of London, he is tired of life -- Samuel Johnson