在perl中访问数组名称时出错

时间:2014-01-28 14:01:34

标签: perl

我正在用perl做一个项目来搜索一个包含所有其他元素的数组中的每个元素,并打印出匹配所在的元素和数组名称。

由于代码很长,我用简短的例子来解释我的问题。

@array1=(sdasd,asdasd,abc);

if(abc=~/$array1[2]/)
{
print"Found!";
}
else
{
print"not found!"
}  

当我尝试使用上述方法搜索模式时,我得到答案。由于有许多数组,每个数组包含许多元素,我给出数组名称为@ array1,@ array2 ...以便我可以使用循环进行搜索。

所以我尝试了这种方法

@array1=(sdasd,asdasd,abc);

$arrayno = 1;
if(abc=~$array$arrayno[2])
{
print"Found!";
}
else
{
print"not found!"
}

我收到以下错误

(Missing operator before $no?)
syntax error at C:\Perl64\prac\pp.pl line 4, near "$arra$no"
Execution of C:\Perl64\prac\pp.pl aborted due to compilation errors.

1 个答案:

答案 0 :(得分:1)

将所有数组保存在同一个结构中要简单得多,您可以在数组中放置尽可能多的数组引用,并在嵌套的foreach循环中迭代它们:

my @arrays = ( [1,  2,  3,  4],
               [5,  6,  7,  8],
               [9, 10, 11, 12],
             );

my $array_counter = 1; 
foreach my $aref ( @arrays ) {
   foreach my $elem ( @$aref ) { # place arrayref in list context
      # do comparison here
      if ( # MATCH ) { print "Found match in Array $array_counter\n"; }
   }
   $array_counter++; # increment counter 
}