我有一个\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
我想删除第一行(日期),然后我想要第二行(标题列) 使用像我的最终输出文件这样的值打印出来:
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中执行此操作的好方法/做法是什么?
答案 0 :(得分:2)
我建议Text::CSV_XS阅读该文件。
在最近的这个问题中,存在类似的问题:How can I use Perl extract a particular column from a tab-separated file?(参见我的回答)
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