我有很多短阵
@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中的所有数据
这是正常的行为,@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)