当我尝试匹配2个相同的变量时,它会一直有效,直到perl中有一个方括号为止。
对于ex,VAR1 = u6701,VAR2 = u6701匹配并给我EQUAL 然而,VAR1 = aw [101],VAR2 = aw [101]给了我不平等。
我使用$ VAR1 == $ VAR2来检查,两个变量都是字符串。请帮忙。
感谢。
答案 0 :(得分:3)
==
是Perl中的数字相等运算符,它检查两个事物是否相等为数字。 eq
是字符串相等运算符,它是您想要使用的。 " 1"和" 01.00"等于数字但不是字符串。 Here's the docs on all the equality operators。还有一本非常好的在线书Beginning Perl。
为什么==
有时会起作用是因为Perl非常自由,到了绝望的地步,将字符串解释为数字。通常它只会将字符串视为0,但有时它会在字符串中找到一个数字并使用它。例如," 101aw"将被解释为101,但" aw101"是0.不要依赖于此。
BTW Perl会警告你所有这些,但默认情况下不会。您必须turn on strict and warnings并且我高度建议您执行并处理它带来的所有问题。它会为你(和我们)节省很多时间。
答案 1 :(得分:2)
在perl中,为了检查两个字符串值,我建议您使用eq
例如
if($VAR1 eq $VAR2)
return true;
else
return false;
==
测试数字的相等性。
eq
对字符串也是如此。
您还可以使用cmp
运算符,它是< =>的非数字等价运算符。操作者:
$result = $string1 cmp $string2;
$结果将是:
`0` if the strings are equal
`1` if string1 is greater than string2
`-1` if string1 is less than string2