undef, defined, exists
perlにおける未定義値はundef。これはmy $var;と同値である。
変数の値が定義されているかは、defined関数で調べる。
hashのキーが定義されているかはexists関数。
use strict; my $var; my $foo = undef; print "\$var eq \$foo is TRUE\n" if ($var eq $foo); print "\$var == \$foo is TRUE\n" if ($var == $foo); print qq(\$var eq "" is TRUE but it's not same.\n) if ($var eq ""); print qq(\$var == "" is TRUE but it's not same.\n) if ($var == ""); print qq(defined("") is TRUE\n) if (defined("")); print qq(defined(\$var) is FALSE\n) if (!defined($var)); print qq#---------------\n\n#; my %hash = (var=> 1, foo=>undef); print qq#defined(\$hash{foo}) is FALSE\n# if (!defined($hash{foo})); print qq#defined(\$hash{piyo}) is also FALSE.\n# if (!defined($hash{piyo})); print qq#exists(\$hash{foo}) is TRUE\n# if (exists($hash{foo})); print qq#exists(\$hash{piyo}) is FALSE.\n# if (!exists($hash{piyo}));