Сортировать значения столбца CSV по заголовкам в perl - PullRequest
0 голосов
/ 14 марта 2020

У меня большой CSV-файл, содержащий 350 полей. Заголовки и значения должны быть расположены на основе заголовков в другом CSV-файле.

Чтобы опробовать меньший регистр, я имею ниже ссылки на кодовые ссылки {AB C D}

use File::Basename;
use Array::Utils qw(:all); 
use Text::CSV;
my @headers = qw(A B C D);
my $csv_in = Text::CSV->new({binary => 1, auto_diag => 1});
my $csv_out = Text::CSV->new({binary => 1, auto_diag => 1});
open my $in, '<:encoding(UTF-8)', 'test.csv';
open my $out, '>:encoding(UTF-8)', 'test_out.csv';

$csv_in->header($in);  
$csv_out->say($out, [@headers]);
while (my $row = $csv_in->getline_hr($in)) {
  $csv_out->say($out, [@{$row}{@headers}]);
}

Он правильно печатает заголовки, но значения других следующих строк пусты

Файл входов -

A, B, D, C

1,2,4 , 3

Ожидаемый выход -

A, B, C, D

1,2,3,4

Токовый выход -

A, B, C, D

,,,

Может кто-нибудь помочь мне исправить это?

1 Ответ

1 голос
/ 15 марта 2020

Я думаю, у меня была другая версия perl и Text :: CSV. Это сработало для меня:

$csv_in->column_names($csv_in->getline($in));

вместо

$csv_in->header($in);

В моей версии отсутствовала функция header. Но я думаю, что ключевым моментом является то, что вы должны определить имена столбцов для входного CSV-файла.

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