perl讀取大文件out of memory
工作需要用perl寫了一個腳本讀取1G多的文件,直接報out of memory,對perl不是很熟悉就上網查了資料,后來發現是因為寫的讀取文件內容時直接將所有文件內容讀入數組導致這個問題。
1
open
(FILE_IN
,
"
<xxx.txt>
"
);
2 foreach $perIns ( < FILE_IN > )
3 {
4 # done
5 }
2 foreach $perIns ( < FILE_IN > )
3 {
4 # done
5 }
這里將1G多的文件都寫到了一個臨時的數組中了,只要需要改寫一下讀取文件的方式,讀一行處理一行。
while(defined(<FILE_IN>)) is OK
1
open
(FILE_IN
,
"
<xxx.txt>
"
);
2 while ( defined ( $perIns = < FILE_IN > ))
3 {
4 # done
5 }
2 while ( defined ( $perIns = < FILE_IN > ))
3 {
4 # done
5 }