我的問題是:如何在Perl程序中輕鬆訪問模式匹配數組? (我知道有解決方案涉及split或/.../g,但我特別要求一個簡單的方法來訪問變量$ 1,$ 2,$ 3,...在Perl程序中輕鬆訪問模式匹配捕獲數組
(我認爲應該有一個數組,類似於@和@ +,但我找不到)
這是我到目前爲止(解決方案A涉及substr($ line,$ - [$ ],$ + [$ ] - $ - [$ ])和溶液B包括EVAL 「\ $$」),但我寧願訪問的變量$ 1,$ 2,$ 3直接作爲數組:
use strict;
use warnings;
my $line = (join '', map { chr($_ + 64) } 1..26) x 10;
my $rstr = '';
$rstr .= '('.('.' x (rand(3) + 2)).')' for 1..rand(15) + 3;
unless ($line =~ m{\A $rstr}xms) {
die "No match";
}
print $rstr, "\n";
for (1..$#-) {
printf "A> %3d. -> pos%3d -%3d = '%s'\n", $_,
$-[$_], $+[$_] - 1, substr($line, $-[$_], $+[$_] - $-[$_]);
}
print "\n";
for (1..$#-) {
printf "B> %3d. -> pos%3d -%3d = '%s'\n", $_,
$-[$_], $+[$_] - 1, eval "\$$_";
}
什麼是 「一個模式匹配的數組」 是什麼意思?也許你可以給出一個清楚的例子,說明你正在做什麼以及爲什麼你不能使用'$ 1','$ 2'等等,或者'm /../ g'返回的數組。 – 2014-09-20 15:22:01