Perl 中的字符串比较不是用,==而是用eq. Perl 不会考虑与13字符串不同的整数,'13'直到您对它们进行操作。不以任何明显方式(例如'Harry')表示数字的字符串值被强制为数值零。因此,$name=='Harry'将永远持有,但$name eq 'Harry'不会。
查看perldoc perlop更多信息。
编辑添加: 如果您启用了warnings编译指示,那么解释器会向您指出这一点。事实上,在您编写的几乎所有 Perl 代码中,它总是一个好主意。特别是,这段代码(通过命令行作为单行代码执行):use strictuse warningsperl -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