这是我将数据附加到数组中的方式:
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”中的最后一个值,就像循环运行一样多次。
答案 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";
}
你可以通过很多方式迭代这个结构,只有一个。
编辑:修正了拼写错误。