我有一个文件,其中包含固定宽度记录格式的内容列表,例如...
w+
我想将其转换为一个csv文件。我知道我可以利用Text :: CVS_XS来解决这个问题,但是我很难把它包裹住。我见过很多文本到cvs的例子,但是在文本已经是表格格式的情况下却没有。这是否意味着,我将不得不从表格格式更改它,并在两者之间添加逗号?还是Text :: CVS为我做到了?
Name Lastyear Weight Thisyear Weight
Alice 130 135
Bob 170 165
Chris 190 210
Daniel 195 185
Eric 150 170
答案 0 :(得分:2)
我假设您是指固定宽度的记录格式。
use strict;
use warnings;
use autodie;
use Text::CSV_XS qw();
open my $in, '<', 'so-57352269.txt';
open my $out, '>:encoding(UTF-8)', 'table.csv';
my @column_widths = (6, 5, 6);
my $csv = Text::CSV_XS->new({binary => 1, auto_diag => 1});
while (my $line = $in->getline) {
chomp $line;
my $pack_format = join '', map { "a$_" } @column_widths;
my @record = unpack $pack_format, $line;
$csv->say($out, \@record);
}