【发布时间】:2014-12-10 08:01:11
【问题描述】:
下面是我打印历史不为空的唯一项目列表的代码。
use strict;
use warnings;
use Text::CSV_XS qw ( csv );
my $q = 0;
my $r = 0;
my @array1;
my @array2;
my @array3;
my %uniqueproject;
my @files = glob("*.csv");
foreach $s (@files) {
open( my $fh, "<", "$s" ) or die "cannot open the file $!";
my @aoh = @{ csv( in => $fh, headers => "auto" ) };
foreach my $i (@aoh) {
if ( defined( $aoh[$q]{History} ) ) {
if ( $aoh[$q]{History} ne "" ) {
$array1[$r] = $aoh[$q]{PROJECT};
$array2[$r] = $aoh[$q]{IDENTIFIER};
$r++;
}
}
$q++;
}
close($fh);
}
foreach (@array1) {
$uniqueproject{$_} = 1;
}
@array3 = keys(%uniqueproject);
foreach (@array3) {
print $_. "\n";
}
如果文件夹中只有一个 CSV,上述代码可以正常工作。对于多个 CSV 文件,我收到内存不足错误。我无法理解此错误的原因。请让我知道是什么填满了内存。如果 foreach 循环不适合遍历文件,建议使用正确的循环。
我的示例 CSV 是
test1.csv:
"SEVERITY","DESCRIPTION","PROJECT","Attachments","priority","IDENTIFIER","STATUS","History","TITLE"
"3","fdlkfjalskfjlskfla
fkdalsfjkasljfkl
dksajdfklsajkl","hadkf","dklsfj/dksfj.dskak/fsajk","4","123","pending","repeat","test csv"
"3","fdlkfjalskfjlskfla
fkdalsfjkasljfkl
dksajdfklsajkl","hadkf","dklsfj/dksfj.dskak/fsajk","4","124","pending","repeat","test csv"
"3","fdlkfjalskfjlskfla
fkdalsfjkasljfkl
dksajdfklsajkl","hadkf","dklsfj/dksfj.dskak/fsajk","4","125","pending","repeat","test csv"
"3","fdlkfjalskfjlskfla
fkdalsfjkasljfkl
dksajdfklsajkl","hadkf","dklsfj/dksfj.dskak/fsajk","4","126","pending","repeat","test csv"
test2.csv:
"SEVERITY","DESCRIPTION","PROJECT","Attachments","priority","IDENTIFIER","STATUS","History","TITLE"
"3","fdlkfjalskfjlskflafkdalsfjkasljfkldksajdfklsajkl","hadkf3","dklsfj/dksfj.dskak/fsajk","4","123","pending","repeat","test csv"
"3","fdlkfjalskfjlskfla
fkdalsfjkasljfkl
dksajdfklsajkl","hadkf4","dklsfj/dksfj.dskak/fsajk","4","124","pending","repeat","test csv"
"3","fdlkfjalskfjlskfla
fkdalsfjkasljfkl
dksajdfklsajkl","hadkf4","dklsfj/dksfj.dskak/fsajk","4","125","pending","repeat","test csv"
"3","fdlkfjalskfjlskfla
fkdalsfjkasljfkl
dksajdfklsajkl","hadkf4","dklsfj/dksfj.dskak/fsajk","4","126","pending","repeat","test csv"
【问题讨论】:
标签: perl csv perl-module