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

时间:2013-05-22 12:34:01

标签: perl

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

分隔。

这就是我目前所拥有的

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

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

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

2 个答案:

答案 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]);