Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Perl解析大型文本文件_Perl_Parsing - Fatal编程技术网

用Perl解析大型文本文件

用Perl解析大型文本文件,perl,parsing,Perl,Parsing,我有大约30GB的基因组文件,类似于下面的 >2RHet assembled 2006-03-27 md5sum:88c0ac39ebe4d9ef5a8f58cd746c9810 GAGAGGTGTGGAGAGGAGAGGAGAGGAGTGGTGAGGAGAGGAGAGGTGAG GAGAGGAGAGGAGAGGAGAGGAATGGAGAGGAGAGGAGTCGAGAGGAGAG GAGAGGAGTGGTGAGGAGAGGAGAGGAGTGGAGAGGAGACGTGAGGAGTG GAGA

我有大约30GB的基因组文件,类似于下面的

>2RHet assembled 2006-03-27 md5sum:88c0ac39ebe4d9ef5a8f58cd746c9810
GAGAGGTGTGGAGAGGAGAGGAGAGGAGTGGTGAGGAGAGGAGAGGTGAG
GAGAGGAGAGGAGAGGAGAGGAATGGAGAGGAGAGGAGTCGAGAGGAGAG
GAGAGGAGTGGTGAGGAGAGGAGAGGAGTGGAGAGGAGACGTGAGGAGTG
GAGAGGAGAGTAGTGGAGAGGAGTGGAGAGGAGAGGAGAGGAGAGGACGG
ATTGTGTTGAGGACGGATTGTGTTACACTGATCGATGGCCGAGAACGAAC
我正在尝试解析文件并快速完成任务, 逐个字符使用下面的代码 但是这个角色没有被打印出来

open (FH,"<:raw",'genome.txt') or die "cant open the file $!\n";

until ( eof(FH) ) {

$ch = getc(FH);
print "$ch\n";# not printing ch

}
close FH;

open(FH),您的错误是忘记了一个
eof

until (eof FH) { ... }
但这不太可能是最有效的解决方案:Perl比,比如说…C慢,所以我们希望尽可能少的循环迭代,尽可能多地在Perl内部完成工作。这意味着逐字符读取文件的速度很慢

另外,使用词法变量(用
my
声明)而不是全局变量;这可能会提高性能

选择一个自然记录分隔符(如
\n
),或读取一定数量的字节:

local $/ = \256; # read 256 bytes at a time.
while (<FH>) {
  # do something with the bytes
}

如果我们走得那么远,使用只是一小步,可能更可取。

您的错误是忘记了一个
eof

until (eof FH) { ... }
但这不太可能是最有效的解决方案:Perl比,比如说…C慢,所以我们希望尽可能少的循环迭代,尽可能多地在Perl内部完成工作。这意味着逐字符读取文件的速度很慢

另外,使用词法变量(用
my
声明)而不是全局变量;这可能会提高性能

选择一个自然记录分隔符(如
\n
),或读取一定数量的字节:

local $/ = \256; # read 256 bytes at a time.
while (<FH>) {
  # do something with the bytes
}

如果我们已经走了那么远,那么使用只是一小步,可能更可取。

你的问题对我来说毫无意义。这取决于你想对数据做什么。
until()
非常不寻常。添加了不正确的代码。刚才更正了代码。您确实不清楚要完成什么。您没有说您想对数据做什么,但逐字读取数据确实会非常慢,几乎可以肯定是错误的方式。您的问题对我来说毫无意义。这取决于您想对数据执行什么操作。
until()
非常不寻常。添加了不正确的代码。刚刚更正了代码。您确实不清楚要完成什么。您没有说明要对数据执行什么操作,但逐字读取数据确实会非常慢,几乎可以肯定这是错误的方式。如果需要,每次读取1024或4096字节ssary。每次1mb,Perl可以处理。Google在旧的GFS中使用64mb块。我对每个进程进行基准测试,以读取3.2MB文件,滑动窗口为200#1.FH,”@在印度制造,您应该会看到通过
sysread FH,$ch,1024
,或者读取多个字符,性能会进一步提高。您的测量速度似乎非常慢,这表明我们无法访问某个问题。请查看您问题下的Borodins注释,并说明您真正的问题。如果需要,请一次读取1024或4096字节。Mak每次读取1mb,Perl可以处理。Google在旧的GFS中使用64mb块。我对每个进程进行基准测试,以读取3.2MB文件,滑动窗口为200#1.FH,“@made_in_india您应该会看到通过
sysread FH,$ch,1024
,或读取多个字符,性能会进一步提高。您的测量速度似乎非常慢,这表明我们无法访问一个问题。请查看您问题下的Borodins评论,并说明您真正的问题。