Perl:如果总是返回true

0 perl if-statement

我刚刚回到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++;
}
Run Code Online (Sandbox Code Playgroud)

你能告诉我我做错了什么吗?

谢谢!

rua*_*akh 8

==是数字比较,字符串like 'Matt''Gym'all都有数值0,所以它们都是==相互的.对于字符串比较,请eq改用:

    if ($showName[$counter] eq $showName[$counter+1])
Run Code Online (Sandbox Code Playgroud)

(顺便提一下,我建议use warnings;在脚本开头附近添加警告.如果你这样做了,你会收到一条有用的消息,警告你正在对非数字值应用数字相等测试.)