你可以使用存储的变量,比如模式匹配($1
,$2
...)来指定另一个变量来推送值吗?这里有一些代码可以帮助解释我的问题:
my @Array_some;
while (<SOMEFILE>){
if ($_ =~ /(some)(match)/) {
push (@Array_$1, $2);
}
}
当我运行时,我收到一个错误:
Scalar found where operator expected near "@Array_$1"
由此我得出结论,这种语法是不可能的。然而,这是我可能的,但另一种方式?使用模式匹配变量指定另一个变量来将值推送到?任何帮助将不胜感激!
答案 0 :(得分:3)
您尝试做的是ill-advised。
相反,只需使用一个Hash of Arrays,如下所示:
my %HoA;
while (<SOMEFILE>){
if (/(some)(match)/) {
push @{ $HoA{$1} }, $2;
}
...;
有关复杂结构的更多信息,请查看perldsc - Perl Data Structures Cookbook。