Perl の undef の取り扱いの注意 #1
use strict;
$hoge = undef;
if ($hoge == 0) {
print "fuga\n";
}if ($hoge eq '') {
print "foo\n";
}
これ, use strict してても実行すると,
fuga
foo
ってでます.
$hoge が 数字とか文字とかと比較されると,
Perl は勝手に気を使って, 数字っぽく ないしは 文字列っぽく 扱ってしまうみたいです.
テストするときなどは, ちゃんと defined してからにしましょう.
use strict;
my $hoge = undef;
if (defined $hoge) {
^---if ($hoge == 0) {
^---^---print "fuga\n";
^---}^---if ($hoge eq '') {
^---^---print "foo\n";
^---}
}