Perl 中的字符串比较不是用,==
而是用eq
. Perl 不会考虑与13
字符串不同的整数,'13'
直到您对它们进行操作。不以任何明显方式(例如'Harry'
)表示数字的字符串值被强制为数值零。因此,$name=='Harry'
将永远持有,但$name eq 'Harry'
不会。
查看perldoc perlop
更多信息。
编辑添加: 如果您启用了warnings
编译指示,那么解释器会向您指出这一点。事实上,在您编写的几乎所有 Perl 代码中,它总是一个好主意。特别是,这段代码(通过命令行作为单行代码执行):use strict
use warnings
perl -e
use strict;
use warnings;
my @names=("Harry","Larry","Moe");
foreach my $name(@names)
{
if($name=="Harry")
{
print "$name\n";
}
}
产生输出
Argument "Harry" isn't numeric in numeric eq (==) at -e line 7.
Argument "Harry" isn't numeric in numeric eq (==) at -e line 7.
Harry
Argument "Larry" isn't numeric in numeric eq (==) at -e line 7.
Larry
Argument "Moe" isn't numeric in numeric eq (==) at -e line 7.
Moe