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;
}