I've been writing extensive documentatin about some of my code at work, and just stumbled across a need to properly define truth for Perl. I remember the concept being a little foreign to myself when i first learned Perl, even with over 10 years of other languages behind me.
At its simplest, there are three false values for scalars:
0
empty string
undef
But then there are situations where a value was defined as "0.0", which is true, but then if you treat it as a number, in certain contexts if becomes "0", which is false. For instance:
my $string = "0.0";
print "true\n" if $string; # true
my $x = 3 + $string;
print "true\n" if $string; # true
$string += 0;
print "true\n" if $string; # false
I guess maybe this gets beyond the scope of truth vs. false and gets into Perl's loose variable typing, and how they interact.
Anyway, any advice for how to properly explain Perl's concepts of truth and false?
Update:
Someone mentioned that i might want to test $x in the second example. Actually, i want to test string. That one is an example of using $string in a numeric context, but it doesn't set the internal falg for $string to say that it was most recently used as a number. (sorry for butchering this explanation, i don't know exactly how the internals work for scalars in perl)
I use the most powerful debugger available: print!