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 }