Есть ли способ назначить столбцы из файла нескольким массивам? - PullRequest
0 голосов
/ 21 июня 2019

У меня есть файл с именем 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 Ответ

1 голос
/ 21 июня 2019

Используйте 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;

но я не нахожу это читабельным. Он перебирает столбцы и массивы для добавления в одно и то же время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...