使用for/foreach访问数组引用数组的正确语法是什么

Sco*_*ter 2 perl for-loop reference

鉴于:

my @main_array = ();

my @sub_array1 = ( 1, 2, 3, 4, 5);
my @sub_array2 = ( "a", "b", "c", "d", "e" );

push @main_array, \@sub_array1;
push @main_array, \@sub_array2;
print "size of main_array is ",scalar(@main_array),"\n";
Run Code Online (Sandbox Code Playgroud)

我想通过main_array进行操作,然后通过它包含的两个数组进行操作,我不知道它的语法是什么.

不知道这是否正确,但Perl似乎想要在foreach变量的前面加一个$.(不喜欢@ $ sub_array)我也想知道循环通过main和sub的语法.

foreach my $sub_array (@main_array)
{
   print $sub_array; # prints ARRAY(0x213232)
   # loop through each item in sub array
   #foreach ... 
}
Run Code Online (Sandbox Code Playgroud)

编辑:所以总结下面给出的答案(感谢所有):

use strict;
use warnings;

my @main_array = ();

my @sub_array1 = ( 1, 2, 3, 4, 5);
my @sub_array2 = ( "a", "b", "c", "d", "e" );

push @main_array, \@sub_array1;
push @main_array, \@sub_array2;
print "size of main_array is ",scalar(@main_array),"\n";

print "--------foreach ---------------------\n";

foreach my $sub_array (@main_array)
{
   print "Sub array has ", scalar(@{$sub_array})," elements\n";
   foreach my $value ( @{$sub_array})
   {
      print "value: ",$value,"\n";
   }
}

print "--------------- for ----------------------- \n";

for (my $i = 0; $i < scalar(@main_array); $i++)
{
    my $sub_array = $main_array[$i];
    print "Sub array has ", scalar( @{$sub_array}), " elements\n";
    for (my $j = 0; $j < scalar( @{$sub_array}); $j++)
    {
       print "value: ", $sub_array->[$j],"\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

Vor*_*ung 6

my $sz = 0;
for my $outer (@main_array) {
  for my $inner( @{ $outer } ) {
     print $inner;
     $sz++;
    }
  }

print "total number of all values held in main_array is $sz \n";
Run Code Online (Sandbox Code Playgroud)

perllol和perldsc是这些问题的良好信息来源

对于调试use Data::Dumper; print Dumper(\@main_array)很有用

希望这可以帮助