如何逐行从perl中获取2D数组中的数据?

时间:2017-07-26 15:49:33

标签: arrays perl

我有一个名为@array_of_boards的数组,其中的数据如下所示, [{1,2,3},{4,5,6},{3,4,5}]

如何遍历此数组以逐行获取数据,因为我必须将它们插入表中。

ColA,ColB,ColC
1,2,3
4,5,6
3,4,5

my @array_of_boards=(0,0,0);
my @temp_array = (1,2,3);
push @array_of_boards,@temp_array
@temp_array = (4,5,6);
push @array_of_boards,@temp_array
@temp_array = (3,4,5);
push @array_of_boards,@temp_array

我尝试使用它,但无法正确对齐数据。

foreach my $row (@array_of_boards){
    my ($ColA,$ColB,$ColC)=$row;
    ##followed by printing statements
}

1 个答案:

答案 0 :(得分:0)

此代码:

my @array_of_boards = (0, 0, 0);
my @temp_array = (1, 2, 3);
push(@array_of_boards, @temp_array);

等同于:

my @array_of_boards = (0, 0, 0);
push(@array_of_boards, 1, 2, 3);

并生成一个包含六个元素的数组,您可以在Data::Dumper的输出中看到:

$VAR1 = [
          0,
          0,
          0,
          1,
          2,
          3
        ];

相反,外部数组的每个元素都应该是一个数组引用,如下所示:

my @array_of_boards = ([0, 0, 0]);
push(@array_of_boards, [1, 2, 3]);

这导致以下数据结构:

$VAR1 = [
          [
            0,
            0,
            0
          ],
          [
            1,
            2,
            3
          ]
        ];

然后可以按预期访问:

for my $array_ref (@array_of_boards) {
    my @row = @$array_ref;
    ...
}