读取CSV并创建不同的阵列

时间:2009-09-01 10:49:57

标签: perl arrays

我正在创建一个脚本来读取csv文件中的值,并将这些值用于其他任务。我写了下面的代码来读取值。

sample file:

site,type,2009-01-01,2009-01-02,....
X,A,12,10,...
X,B,10,23,...
Y,A,20,33,...
Y,B,3,12,...

and so on....

代码:

my @value;
while (<INFILE>) {
    next if $_ !~ /B/;
        my ($v1, $v2, @v3) = split /[,]/, $_;
        push(@value, @v3);
}

它为我提供了B类的所有值。我需要帮助为每个B类值创建不同的数组。

3 个答案:

答案 0 :(得分:3)

阅读CSV文件比我们大多数人最初想的要困难。事实证明,阅读CSV文件令人沮丧。因此,我的建议是自己这样做,而是使用Text::CSV_XS代替。

答案 1 :(得分:2)

根据我的理解,您想使用列表列表:

my @value;
while (<INFILE>) {
    next if $_ !~ /B/;
    chomp;
    my ( $v1, $v2, @v3 ) = split /[,]/, $_;
    push @value, [@v3];  # This creates a list of lists
}

use Data::Dumper::Simple;

print Dumper @value;

答案 2 :(得分:1)

请查看此link。希望这会对你有所帮助。