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



QUOTE:
原帖由 andylei 于 2008-8-22 08:43 发表
open(F,"file")

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

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

谢谢。 我想读 第 1000行 到  2000行,这个怎么表达?


QUOTE:
原帖由 flw 于 2008-8-21 13:04 发表
man split

split -l 1 /path/to/urfile

有点高深,看不懂。

我想读取  第1000,到第2000行, 怎么处理?


QUOTE:
原帖由 小星2 于 2008-8-24 18:34 发表



有点高深,看不懂。

我想读取  第1000,到第2000行, 怎么处理?

split 是 shell 命令,大家在猜你要做什么。

while (<F>){
    print if $. >= 1000 && $. <= 2000
}


QUOTE:
原帖由 小星2 于 2008-8-24 18:33 发表



谢谢。 我想读 第 1000行 到  2000行,这个怎么表达?

自己写个子例程吧:

sub read_file
{
    my $file_name = @_[0];
    my @file_list = undef;

    open (FILE,"$file_name");
    while (<FILE>)
    {
        push(@file_list,$_);
    }
    close (FILE);

     for (my $i=1000;$i < 2000;$i++)
    {
        print @file_list[$i];
    }

}

&read_file("./xxx");

我暂时只能想到这个方法,如果有哪位高手能有好的方法希望共享一下,谢谢了。因为觉得这个方法如果文件大的话可能会慢。

13  楼的不是写的很简捷了嘛
嗯,很多人都是被迫用perl写东西,然后就有了很多类型C风格的perl代码了。
说的好,不过至少不难看。