+ -
当前位置:首页 → 问答吧 → 关于perl匹配和智能匹配的问题

关于perl匹配和智能匹配的问题

时间:2011-12-21

来源:互联网

今天晚上看到小羊驼的智能匹配这一章,遇到一个奇怪的问题,在这里请教大家。

当程序1为:
#!/usr/bin/perl -w 
#use strict;
my $name="you are me";
$_=$name;
print "I found you in the name!\n" if $name= ~ /you/;
print "yes,I found you in the name!\n" if $name ~~ /you/;
# print "I found you in the name!\n" if $name= ~ /you/;
输出结果为:
I found you in the name!

当程序2为:
#!/usr/bin/perl -w 
#use strict;
my $name="you are me";
$_=$name;
#print "I found you in the name!\n" if $name= ~ /you/;
print "yes,I found you in the name!\n" if $name ~~ /you/;
print "I found you in the name!\n" if $name= ~ /you/;
输出结果为:
yes,I found you in the name!
I found you in the name!

当程序3为:
#!/usr/bin/perl -w 
#use strict;
my $name="you are me";
$_=$name;
#print "I found you in the name!\n" if $name= ~ /you/;
print "yes,I found you in the name!\n" if $name ~~ /you/;
print "I found you in the name!\n" if $name= ~ /you/;
print "yes,I found you in the name!\n" if $name ~~ /you/;
输出结果为:
yes,I found you in the name!
I found you in the name!

当程序4为:
#!/usr/bin/perl -w 
#use strict;
my $name="you are me";
$_=$name;
print "I found you in the name!\n" if $name= ~ /you/;
print "yes,I found you in the name!\n" if $name ~~ /you/;
print "I found you in the name!\n" if $name= ~ /you/;
print "yes,I found you in the name!\n" if $name ~~ /you/;
输出结果为:
I found you in the name!
I found you in the name!

然后从上面三个程序测试的结果,我发现当程序先遇到绑定操作符时匹配时就不再匹配后面的智能匹配了。而当先遇到智能匹配匹配上后仍然匹配后面的绑定操作符时匹配。不过我不知道原因,在这里希望大家帮忙解决一下。

作者: junjieguo   发布时间: 2011-12-21

问题要言简意赅。三行代码文字就能说清楚的问题,不要用50多行。这对读者的时间是一种浪费。

作者: iambic   发布时间: 2011-12-21