问大家一个问题,当读取一个超过100万行文本文件时

问大家一个问题,当读取一个超过100万行文本文件时

怎么办?

open (F, "$file");
@list=<F>;
close(F);


这样会慢死人的。但是必须得读出来,然后每一行都作为数据都写入一个小文件哦,怎么处理好?


[Copy to clipboard] [ - ]
CODE:
while (<F>){
...
}



QUOTE:
然后每一行都作为数据都写入一个小文件哦

什么意思?
man split

split -l 1 /path/to/urfile
split 最好了
一行一行的读
open(F,"file")

while (<F>)
{
   ...... #what you want to do!
}

你用@list = <F> 这样把整个文件都直接读进内存,很慢的。用while(<F>)是一行一行循环读该文件中没行纪录,会快很多。


QUOTE:
原帖由 小星2 于 2008-8-21 12:49 发表
怎么办?

open (F, "$file");
@list=;
close(F);


这样会慢死人的。但是必须得读出来,然后每一行都作为数据都写入一个小文件哦,怎么处理好?

直接一口气读到内存中,你的内存会爆的,也是perl不推荐的,while循环是很好的方法
一百万行都读到内存里,如果是PC机,一下就玩完了。