Помогите разобрать файл вкладки и пользовательское форматирование в Perl - PullRequest
1 голос
/ 18 августа 2011

У меня есть выходной файл \t с разделителями:

Data for 08/10/2011 
Host    QueueName   Queue-id    
test    123 Test Q  110
test    456 Test Q  120
test    789 Test Q  130

Я хочу удалить первую строку (дату), а затем я хочу, чтобы 2-я строка (столбцы заголовка) распечаталасьсо значениями, такими как мой конечный выходной файл:

Host=test QueueName=123 Test Q Queue-id=110
Host=test QueueName=456 Test Q Queue-id=120
Host=test QueueName=789 Test Q Queue-id=130

Каков хороший способ / практика сделать это в perl?

1 Ответ

2 голосов
/ 18 августа 2011

Я бы рекомендовал Text :: CSV_XS для чтения файла.

В этом недавнем вопросе возникла похожая проблема: Как я могу использовать Perl для извлечения определенного столбца из файла, разделенного табуляцией? (см. Мой ответ)

use warnings;
use strict;
use Text::CSV_XS;
use autodie;

my $csv = Text::CSV_XS->new( { sep_char => "\t" } );
<DATA>;  # discard the first line
$csv->column_names ($csv->getline (*DATA));
my $hr = $csv->getline_hr_all(*DATA); 

for my $hashref (@$hr) {
    my @list;
    for my $key ($csv->column_names()) {
        push @list, join '=', $key, $hashref->{$key};
    }
    print "@list\n";
}
__DATA__
Data for 08/10/2011 
Host    QueueName   Queue-id    
test    123 Test Q  110
test    456 Test Q  120
test    789 Test Q  130
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...