有没有一种方法可以将文件中的列分配给多个数组?

时间:2019-06-21 18:56:45

标签: perl

我有一个名为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中寻找什么(这是我用作入门参考)。

1 个答案:

答案 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;

但是我觉得它不可读。遍历要同时附加到的列和数组。