在我的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 = …Run Code Online (Sandbox Code Playgroud)