如何在 Perl 中从二维数组中提取数组?

Rog*_*ord 5 arrays perl multidimensional-array

我有一个二维数组,我想将第一个元素放入一个简单数组中:

use strict; use warnings;
use Data::Dump;

my @matrix = ([1,2,3], [4], [5,6]);
my @array  = (7,8,9);

my @list = $matrix[0];

print "matrix: " ; dd \@matrix;
print "array:  " ; dd \@array;
print "list:   " ; dd \@list;

print "size of matrix is ", scalar(@matrix), "\n";
print "size of array is  ", scalar(@array),  "\n";
print "size of list is   ", scalar(@list),   "\n";

Run Code Online (Sandbox Code Playgroud)

如果我运行它,我会得到输出:

matrix: [[1, 2, 3], [4], [5, 6]]
array:  [7, 8, 9]
list:   [[1, 2, 3]]
size of matrix is 3
size of array is  3
size of list is   1
Run Code Online (Sandbox Code Playgroud)

所以看起来list仍然是一个二维数组。如何获得类似于array矩阵第一个元素的一维数组?

too*_*lic 8

您有一个对数组的引用。您需要取消引用它。改变:

my @list = $matrix[0];
Run Code Online (Sandbox Code Playgroud)

到:

my @list = @{ $matrix[0] };
Run Code Online (Sandbox Code Playgroud)

更改后,输出如下:

matrix: [[1, 2, 3], [4], [5, 6]]
array:  [7, 8, 9]
list:   [1, 2, 3]
size of matrix is 3
size of array is  3
size of list is   3
Run Code Online (Sandbox Code Playgroud)

请参阅perldsc