Perl字符串比较不起作用

Perl字符串比较不起作用,perl,Perl,下面是我的Perl程序: my $var1='perfp2u1@vanlync2k13.com'; my $var2='PerfP2U1@vanlync2k13.com'; if($var1 eq $var2){ print "match"; } else{ print "no match"; } 输出为: 不匹配 我不知道为什么程序不能正常工作????? 我希望上述程序的输出“匹配” 下面是我的straberry perl版本详细信息(OS:Windows7) 如果需要不区分

下面是我的Perl程序:

my $var1='perfp2u1@vanlync2k13.com';
my $var2='PerfP2U1@vanlync2k13.com';
if($var1 eq $var2){
    print "match";
}
else{
    print "no match";
}
输出为:
不匹配

我不知道为什么程序不能正常工作????? 我希望上述程序的输出“匹配”

下面是我的straberry perl版本详细信息(OS:Windows7)


如果需要不区分大小写的匹配,只需使用


Perl
eq
运算符区分大小写,我很惊讶您认为它的行为应该有所不同

要进行不区分大小写的比较,您可以在进行比较之前将两个字符串都转换为小写(或大写-只要以相同的方式修改两个字符串就无所谓)

像这样

my $var1 = 'perfp2u1@vanlync2k13.com';
my $var2 = 'PerfP2U1@vanlync2k13.com';

if (lc $var1 eq lc $var2){
    print 'match';
}
else {
    print 'no match';
}
输出

match

当字符串明显不相等时,您为什么期望“匹配”呢?而且
eq
区分大小写,所以字符串不匹配,因为
$var2
有大写字母
P
s。这对我来说似乎是不言而喻的。您的输出是
不匹配
,因为字符串不匹配。您的程序工作正常。对于不区分大小写的比较,您实际上希望使用
fc($var1)eq-fc($var2)
,但它仅作为5.16中开始的内置项提供
lc($var1)eq-lc($var2)
几乎总是可以工作的,所以它适用于其他地方。@ikegami:这只适用于非ASCII应用程序。它还需要一个
使用功能'fc'
使用5.016
来启用它。OMG,我怎么会错过案例不匹配!!!我花了半天时间试图找出哪里出了问题!!!我的天&我在开放论坛上问了一个愚蠢的问题!!!好。。。(我真的对自己很失望)…但是非常感谢你指出了这一点,否则我会花更多的时间试图找出哪里出了问题:)@SaurabhChakrabarty:别担心,我们都会这样做的!我不知道当时我怎么会在发帖时漏掉两个字符串的案例,但后来我自己发现了。但无论如何,感谢您的回答:)。对于不区分大小写的比较,您实际上希望使用
fc($var1)eq fc($var2)
,但它仅作为5.16版开始的内置版本提供
lc($var1)eq-lc($var2)
几乎总是可以工作的,所以它适用于其他地方。感谢对的介绍。我考虑申请的一家公司最近做了大量的unicode工作,但我还没有真正解决这个问题。我只知道这是一个非常头痛的问题,从那些在那里工作的人那里。天哪,我怎么能错过这个案子不匹配!!!我花了半天时间试图找出哪里出了问题!!!我的天&我在开放论坛上问了一个愚蠢的问题!!!好。。。(我真的很沮丧)…,但非常感谢你指出了这一点,否则我会花更多的时间试图找出哪里出了问题:)。
my $var1 = 'perfp2u1@vanlync2k13.com';
my $var2 = 'PerfP2U1@vanlync2k13.com';

if (lc $var1 eq lc $var2){
    print 'match';
}
else {
    print 'no match';
}
match