【发布时间】:2020-05-23 01:33:28
【问题描述】:
在我的 perl 脚本中,我使用了 if ($a == undef) 条件,我认为它与 if (not defined $a) 相同,其中 $a 是从 csv 文件中读取的字符串。但是,我注意到定义了几个字符串值("", " ", "0", "-0", "+0", "@", "a",以及许多其他空格和特殊字符),还有undef。如果undef 仅用于数值,则应通过"0"、"+0" 和"-0"。谁能解释一下?我现在明白了,我不应该用if ($a == undef) 代替if (not defined $a)。
我的测试代码是:
@a_array = ("-1", "-0", "0", "+0", "1", "", " ", "@", "a", "\$", "-");
undef $a;
test_a();
foreach $a (@a_array) {
$len_a = length($a);
test_a();
}
sub test_a {
if (defined $a) { print "a = $a is defined; "} else {print "a = $a not defined; "};
if ($a == undef) { print "a = $a (== undef); "} else {print "a = $a (!= undef); "};
if (length($a) > 0){ print "length of a is $len_a > 0 \n"} else {print "length of a is $len_a !> 0 \n"};
}
【问题讨论】: