从.csv读入1d数组 - perl

时间:2016-08-20 00:52:03

标签: perl

我对perl很新。我想从文件中读取元素并将它们存储到1d数组中。例如,

{{1}}

这种方法可以吗?如果我想把它读成2d数组,那会更容易吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为你的代码比你需要的多得多。在while循环中,您一次只读一行 - 只需在那里进行所有处理。

提前构建@linearray会在您的示例中为您购买任何内容,并且会占用不必要的内存。如果您想在将数据推送到@resultarray之前对数据进行排序,可能有一些理由这样做,但如果您不需要它,最好避免额外的数据结构

my $filename = $ARGV[0];
open my $filehandle, '<', $filename or die "Could not open $filename\n";

my @resultarray;
while(<$filehandle>) {
    chomp;
    my @linearray = split /,/;

    ## What did you want to do here, just add them to @resultarray?

    push @resultarray, @linearray;
}

请记住,您可以一步完成:

push @resultarray, split /,/;

别忘了关闭文件句柄。

close $filehandle;

所有这一切,如果这是你处理逗号分隔文件的方式。如果你的文件是真正的CSV(字段可以有逗号,返回字符),那么你真的想使用Text::CSV来处理所有这些肮脏的事情。

答案 1 :(得分:-1)

open IN,$filename || die "$!";
my @res=();
while(defined($line=<IN>)){
    chomp($line);
    @info=split(/,/,$line);
    push(@res,[@info]);
}
print $res[1][1];
close IN;