使用变量指定其他变量

时间:2014-10-25 03:14:25

标签: perl variables

你可以使用存储的变量,比如模式匹配($1$2 ...)来指定另一个变量来推送值吗?这里有一些代码可以帮助解释我的问题:

my @Array_some;
while (<SOMEFILE>){
    if ($_ =~ /(some)(match)/) {
        push (@Array_$1, $2);
    }
}

当我运行时,我收到一个错误:

  

Scalar found where operator expected near "@Array_$1"

由此我得出结论,这种语法是不可能的。然而,这是我可能的,但另一种方式?使用模式匹配变量指定另一个变量来将值推送到?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

您尝试做的是ill-advised

相反,只需使用一个Hash of Arrays,如下所示:

my %HoA;

while (<SOMEFILE>){
    if (/(some)(match)/) {
        push @{ $HoA{$1} }, $2;
    }
    ...;

有关复杂结构的更多信息,请查看perldsc - Perl Data Structures Cookbook