2

我目前有一个准备,它需要一个 csv 文件,单行数据,多个字段用逗号分隔。然后输出一个管道分隔的文件。然而,我遇到的问题是,对于数据中的某个字段,我现在需要用“-”分隔

这是我目前拥有的

     $line = $_;
    $line =~ s/\,/\|/g;

    my @field = split(/\|-/, $line);

非常感谢任何帮助。对不起,如果我对此也有点模糊。

4

2 回答 2

1

解析 CSV 并不像您想象的那么简单,因此使用 CPAN 模块来执行此任务会更安全,例如Parse::CSV。该模块允许配置分隔符。例子:

my $parser = Parse::CSV->new(
      file       => 'my_data.csv',
      sep_char   => ';'
);

while ( my $array_ref = $parser->fetch ) {
     # Do something...
}
于 2013-05-22T12:46:44.133 回答
1

您可以使用以下内容来使用多个分隔符(注意它存储在hashnot 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]);
于 2013-05-22T12:36:22.437 回答