我刚刚回到Perl编程中,所以如果这是一个简单/愚蠢的问题,我会道歉。
我的If语句返回true(永远不会去其他地方),我不确定为什么。例如,此代码从不打印“getshere”:
@showName = ("Matt","Matt","Matt","Gym","Gym");
$counter=0;
foreach (@showName)
{
if ($showName[$counter]==$showName[$counter+1])
{
print "$showName[$counter] equ $showName[$counter+1]\n";
}
else
{
print "getshere";
}
$counter++;
}
你能告诉我我做错了吗?
谢谢!
答案 0 :(得分:8)
==
是数字比较,'Matt'
和'Gym'
等字符串都具有数值0
,所以它们彼此都是==
。对于字符串比较,请改用eq
:
if ($showName[$counter] eq $showName[$counter+1])
(顺便说一句,我建议在脚本开头附近添加use warnings;
来启用警告。如果你这样做了,你会收到一条有用的消息,警告你正在应用数字相等测试到非数字值。)
答案 1 :(得分:3)
==
运算符将字符串转换为数字并进行数字比较。要比较字符串,请使用eq
。要测试字符串是否大于或小于彼此,请使用cmp
。
if ($showName[$counter] eq $showName[$counter+1])