The defined function in Perl checks if the given value is anything but undef
use strict;
use warnings;
use 5.010;
my $x;
my $y = 0;
sub func {
return;
}
my $z = func();
say defined $x ? 'defined' : 'not defined'; # not defined
say defined $y ? 'defined' : 'not defined'; # defined
say defined $z ? 'defined' : 'not defined'; # not defined
say defined $z ? 'defined' : 'not defined'; # not defined
say defined &func ? 'defined' : 'not defined'; # defined
say defined &other ? 'defined' : 'not defined'; # not defined
defined means it is NOT undef
not defined means it is undef
Being "false" or "true" have different meaning than being "defined" or "not defined".