perl中模式匹配的问题

帮我看下下面这个程序:usestrict;usewarnings;my$string1="madamimadam";my$string2="themottomeansso... 帮我看下 下面这个程序:
use strict;
use warnings;

my $string1 = "madam im adam";
my $string2 = "the motto means something";
my $string3 = "no palindrome here";

findPalindrome( $string1 );
findPalindrome( $string2 );
findPalindrome( $string3 );

sub findPalindrome
{
my $string = shift();

if ( $string =~
/(\w)\W*(\w)\W*(\w)\W*(\w)\W*\4\W*\3\W*\2\W*\1/
or $string =~
/(\w)\W*(\w)\W*(\w)\W*(\w)\W*\3\W*\2\W*\1/ ) {
print "$string - ",
"has a palindrome of at least 7 characters.\n";
}
else {
print "$string - has no long palindromes.\n";
}
}

有点不明白的地方:
(1):
my $string = shift();这句话是什么意思啊,shift()有什么作用,在网上看了下,说是用于数组的,但用在这是什么意思呢?
(2) :
在上面的模式匹配中,出现了\4 \3 \2 \1 之类的东西,那么这个代表什么意思呢?好像没碰到过这样用的。
谢谢各位!
展开
 我来答
星空深海J
2010-09-09
知道答主
回答量:28
采纳率:0%
帮助的人:27.4万
展开全部
my $string = shift();这句话等同于my $string = $ARGV[0];perl里的默认数组,存储I/O信息的。

至于后面那个问题,是扑捉模式匹配的意思,就是按匹配语句中括号的顺序,依次把匹配到的内容存在变量$1、$2、$3、$4中,这是perl中默认的变量。至于这里为啥用/1/2/3/4我都很疑惑啊,应该是笔误吧,egrep才这么用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式