如何为数据文件中的特定字段添加单独的分隔符-Perl

如何为数据文件中的特定字段添加单独的分隔符-Perl,perl,Perl,我目前有一个prep,它接受一个csv文件,单行数据,多个字段用逗号分隔。然后输出一个以管道分隔的文件。然而,我的问题是,对于数据中的某个字段,我现在需要用“-”分隔 这就是我现在拥有的 $line = $_; $line =~ s/\,/\|/g; my @field = split(/\|-/, $line); 非常感谢您的帮助。很抱歉,如果我对此也有点含糊不清。您可以使用以下方法来使用多个清除器(请注意,它存储在散列中而不是数组中);例10 所以对于你的情况,

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

这就是我现在拥有的

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

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

非常感谢您的帮助。很抱歉,如果我对此也有点含糊不清。

您可以使用以下方法来使用多个清除器(请注意,它存储在
散列中
而不是
数组中
);例10

所以对于你的情况,它看起来像

 my %field =  split(/[\|-]/, $line);
除此之外,您可以随时嵌套您的拆分并执行以下操作

my @field = split(/\|/, $line);
my @newField = split(/-/, $field[0]);

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

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

while ( my $array_ref = $parser->fetch ) {
     # Do something...
}

发布CSV文件中的样本数据将很有帮助。
AC123,ABC ACC,666123456789987654321,J BLOGGS先生和H BLOGGS女士RE-DAVID BLOGGS,,,,2013年3月1日
my $parser = Parse::CSV->new(
      file       => 'my_data.csv',
      sep_char   => ';'
);

while ( my $array_ref = $parser->fetch ) {
     # Do something...
}