在Loop Perl中打印2维数组

时间:2013-12-18 11:56:11

标签: perl perl-data-structures

这是我将数据附加到数组中的方式:

push @cordinate_and_link, ($cordinate , $link); 

所以,如果我打印 @cordinate_and_link ,我会得到类似的内容:

172193 1 19601 2 14835 3 4758 4 ...

我想要一个循环,只能循环第一列[0]并生成所有值。

这就是我一直在尝试的:

foreach my $cordinate ( $cordinate_and_link[0]) {
            print "$cordinate";
        } 

但是这个语句只打印行“4758”中的最后一个值,就像循环运行一样多次。

2 个答案:

答案 0 :(得分:4)

您目前正在将两个值附加到彼此相邻的@cordinate_and_link - 它们不在单独的列中。为了明确它们位于两个不同的列中,我们push代表匿名arrayref [...]

push @cordinate_and_link, [$cordinate , $link]; 

Parens ()不会在Perl中创建数组或元组。

稍后,我们可以遍历所有行,只打印每行中的第一列:

foreach my $cordinate (@cordinate_and_link) {
    print $cordinate->[0];
} 

答案 1 :(得分:1)

您帖子中的代码会将您的列表展平为一维数组:

push @coordinate_and_link, ($coordinate , $link);

这将需要行主要顺序表达式来获取'第0列'。

我想你想要这个:

push @coordinate_and_link, [$coordinate, $link];

在这种情况下,你会像这样迭代它:

for my $row (@coordinate_and_link) {
    print "$row->[0]\n";
}

你可以通过很多方式迭代这个结构,只有一个。

编辑:修正了拼写错误。