perl在一个数组中推送许多数组

Ant*_*GMO 0 perl

我有很多短阵

 @seq1 /773..1447/        @seq2 /1 2 1843..1881 1923..2001/
Run Code Online (Sandbox Code Playgroud)

但我用推

   push(@add, @seq1);
   push(@add, @seq2);
Run Code Online (Sandbox Code Playgroud)

但它显示它将所有数组合并为一个不能再获得每个子数组

  /773..1447 1 2 1843..1881 1923..2001/
Run Code Online (Sandbox Code Playgroud)

当我使用

  $number=@add;
Run Code Online (Sandbox Code Playgroud)

它显示6,但它应该是2.任何人都可以解释原因以及如何改变它.

当我使用for循环添加每个数组

   for(..){
 @temp= split(/,/,$_); 
 push(@add, \@temp);
 }
Run Code Online (Sandbox Code Playgroud)

然后当我打印@add; 它只显示内存地址,如何显示@add中的所有数据

Сух*_*й27 6

这是正常的行为,@seq1如果你想@add成为二维数组,请使用引用,

push(@add, \@seq1);
Run Code Online (Sandbox Code Playgroud)

要打印的所有值@add,你应该use Data::Dumper; print Dumper \@add;

原因是所有参数在被推入数组时都会变为列表,因此

@a = @b = (1,2);
push(@add, @a, @b);
Run Code Online (Sandbox Code Playgroud)

和写作一样

push(@add, $a[0],$a[1], $b[0],$b[1]);
Run Code Online (Sandbox Code Playgroud)

检查perlrefperllol以供参考.