0-but-true.txt
use strict;
use warnings;
# Argument "0 but foo" isn't numeric in printf at 0-but-true.txt line 21.
printf "gives a warning: %i\n", "0 but foo";
# this is ok
printf "no warning: %i\n", "0 but true";
my $i;
if($i = foo(1)) {
printf "true: %i\n", $i; # "true: 1"
}
if($i = foo(0)) {
printf "also true: %i\n", $i; # "also true: 0"
}
sub foo {
my $i = shift;
return "0 but true" if ! $i;
return $i;
}