我需要逐行讀取一個200MB「分隔」文件並將其內容收集到一個數組中。爲什麼我的Perl腳本死於「內存不足」異常?
我每次運行該腳本,Perl中拋出一個「內存不足」異常,但我不明白爲什麼!
有些建議嗎?
#!/usr/bin/perl -w
use strict;
use warnings;
open my $fh, "<", "../cnai_all.csd";
my @parse =();
while (<$fh>) {
my @words = split(/\s/,$_);
push (@parse, \@words);
}
print scalar @parse;
的cnai文件看起來像這樣:它包含了11000行和4200倍的值,通過「空格」分隔,每行。
VALUE_GROUP_A VALUE_GROUP_B VALUE_GROUP_C
VALUE_GROUP_A VALUE_GROUP_B VALUE_GROUP_C
VALUE_GROUP_A VALUE_GROUP_B VALUE_GROUP_C
VALUE_GROUP_A VALUE_GROUP_B VALUE_GROUP_C
上面的代碼只是一個精簡的示例。
最終腳本會將所有值存儲在散列中,並稍後將其寫入數據庫。
但首先,我要解決的是內存的問題!
代碼說'while(<$fh>)',但它沒有顯示在標記中。 – mob 2010-02-04 16:50:53
@ floppy-doo請編輯您的問題,告訴我們cnai_all.csd的內容是什麼樣子的? – 2010-02-04 16:55:21
另請參閱:http://stackoverflow.com/questions/1663498/finding-a-perl-memory-leak/ – Ether 2010-02-04 21:53:30