我目前有一个准备工作,它采用csv文件,单行数据,以逗号分隔的多个字段。然后输出管道分隔文件。然而,我遇到的问题是,我现在需要,对于数据中的某个字段,也要用' - '
分隔。这就是我目前所拥有的
$line = $_;
$line =~ s/\,/\|/g;
my @field = split(/\|-/, $line);
任何帮助非常感谢。对不起,如果我对此也有点模糊。
答案 0 :(得分:1)
解析CSV并不像您想象的那么简单,因此使用CPAN模块执行此任务更安全,例如Parse::CSV。此模块允许配置分隔符。例如:
my $parser = Parse::CSV->new(
file => 'my_data.csv',
sep_char => ';'
);
while ( my $array_ref = $parser->fetch ) {
# Do something...
}
答案 1 :(得分:0)
您可以使用以下内容来使用多个分隔符(请注意,它存储在hash
而不是array
);示例10 http://perlmeme.org/howtos/perlfunc/split_function.html
my %values = split(/[=;]/, $data);
因此,对于您的情况,它看起来像
my %field = split(/[\|-]/, $line);
否则,您可以随时嵌套您的分组并执行类似
的操作my @field = split(/\|/, $line);
my @newField = split(/-/, $field[0]);