【发布时间】:2013-07-26 13:48:26
【问题描述】:
我正在学习 perl,现在我正在尝试同时填充几个变量,从匹配捕获中,在一段时间组中。我有“长”版本的工作,如下所示:
$pc = ...
while ($pc =~ m/bla1(.*?)bla2(.*?)bla3(.*?)bla4(.*?)bla5(.*?)bla6(.*?)bla7/g) {
$var1 = $1;
$var2 = $2;
$var3 = $3;
$var4 = $4;
$var5 = $5;
$var6 = $6;
...
}
对于单个捕获(在 while 循环之外)我知道我可以这样做:
my $string = 'abcde';
my @captures = $string =~ m/.(.)(.)(.)./;
my ($aa,$ab,$ac) = @captures;
print ("$aa - $ab - $ac\n");
有没有办法一次填充 while 循环中的所有变量?我需要做类似下面的代码吗,还是有更简单的(不需要 2 个正则表达式)方法?
while ($pc =~ m/bla1(.*?)bla7/g) {
my @captures = $1 =~ m/(.*?)bla2(.*?)bla3(.*?)bla4(.*?)bla5(.*?)bla6(.*?)/;
($var1,$var2,$var3,$var4,$var5,$var6) = @captures;
...
}
提前致谢。
【问题讨论】:
-
my ($aa,$ab,$ac) = $string =~ m/.(.)(.)(.)./;也适用于您的“排除while循环”代码。