我有一个名为data.txt的文件,如下所示:
12487 72 3.179
12487 84 2.47
12976 82 3.22
12443 81 4.29
我需要做的是将每列从文件中读取时放在自己的数组中,这样就可以了:
@a = 12487 12487 12976 12443
@b = 72 84 82 81
@c = 3.179 2.47 3.22 4.29
因此,每一行都将执行类似$ 1进入@a $ 2进入@b $ 3进入@c的操作-但我不确定如何确切地执行此操作。
我已经开始尝试从每一行中获取每个数组索引,但这实在太麻烦了(文件很大)。我对perl还是很陌生,所以我很困惑,并且不确定我应该在perldoc中寻找什么(这是我用作入门参考)。
答案 0 :(得分:1)
使用push将元素附加到数组。
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my (@a, @b, @c);
while (<>) {
my @columns = split;
push @a, $columns[0];
push @b, $columns[1];
push @c, $columns[2];
}
say "@$_" for \@a, \@b, \@c;
您可以使用
代替三下推 push @{ (\@a, \@b, \@c)[$_] }, $columns[$_] for 0 .. 2;
但是我觉得它不可读。遍历要同时附加到的列和数组。