匹配在Perl的方形括号内

时间:2015-02-06 06:08:04

标签: perl

当我尝试匹配2个相同的变量时,它会一直有效,直到perl中有一个方括号为止。

对于ex,VAR1 = u6701,VAR2 = u6701匹配并给我EQUAL 然而,VAR1 = aw [101],VAR2 = aw [101]给了我不平等。

我使用$ VAR1 == $ VAR2来检查,两个变量都是字符串。请帮忙。

感谢。

2 个答案:

答案 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