注册 登录
编程论坛 Perl论坛

求小修改一下,小程序

a13780393 发布于 2012-11-27 11:33, 5579 次点击
我这有个perl的程序,比较简单,是统计字符百分比的程序。我的文件全是由ACGT四个字母组成的,除此之外没有别的字母,共18亿个字母。现在的问题是运行这个代码,报错:out of memory。就是内存不够用,怎么修改一下啊?文件中字母少的时候是可以用的。求!
 #!/usr/bin/perl
use strict;
 use warnings;
 open IN,"1.txt";
 open OUT,">2.txt";
 my $dna  = <IN>;
 my $revcom = $dna;
 $revcom =~ tr /acgt/ACGT/;
 my $gc = $revcom =~ tr/GC//;
 my $gc_content = sprintf( "%.2F", $gc / length($revcom) * 100 );
 my $at = $revcom =~ tr/AT//;
 my $at_content = sprintf( "%.2F", $at / length($revcom) * 100 );
 my $ALL = $revcom =~ tr/ACGT//;
 my $A = $revcom =~ tr/A//;
 my $C = $revcom =~ tr/C//;
 my $G = $revcom =~ tr/G//;
 my $T = $revcom =~ tr/T//;
 print OUT "GC数量:$gc\n";
 print  OUT "GC含量:${gc_content}%\n";
 print OUT "AT数量:$at\n";
 print  OUT "AT含量:${at_content}%\n";
 print OUT "A总数: $A\n";
 print OUT "C总数: $C\n";
 print OUT "G总数: $G\n";
 print OUT "T总数: $T\n";
 print OUT "ACGT总数: $ALL\n";
 close OUT;
 close IN;
 这个程序的问题,是我的数据在18亿个字符,提示信息是是超出内存(out of memory).
1 回复
#2
岁月如刀2013-07-22 00:01
http://www.
Perl大文件模块:Tie-File
1