在perl中读取CSV文件

时间:2014-02-10 11:20:31

标签: perl

我正在使用Perl脚本读取CSV文件,我有一个CSV文件,第一列包含数据包,前面有标记号

示例:

Packet0,tag1,tag2,tag3
packet1,tag1,tag2,tag3,tag4
packet2,tag1

我制作了这个剧本:

my @parts = ();
my @tag = ();
my $j=0;
open CSVFILE, 'data.csv';
while (my $row = <CSVFILE>) {
  chomp;
  my @line = split(/\s?,\s?/, $row);
  push @packet, $line[0];

  for (my $i = 1; $i <= $#line; $i++) {
    $tag[$i][$j] = $line[$i]; 
  }
  j++;
}

但是这段代码对我不起作用,任何人都可以在我出错的地方帮助我吗?

2 个答案:

答案 0 :(得分:4)

如果您熟悉CPAN,有些库可以为您解决此问题:

https://metacpan.org/pod/Text::CSV

正确执行CSV可能会非常棘手。特别是在引用和多行字段时。

答案 1 :(得分:0)

#/usr/bin/perl -w
use strict;
use warnings;

my @packet = ();
my @tag = ();
my $j = 0;

...
while (my $row = <CSVFILE>) {
  my @line = split(/\s?,\s?/, $row);
  push @packet, shift(@line);
  $tag[$j] = [ @line ]; #or push @tag, \@line;
  $j++;
}
...