【发布时间】:2016-08-03 09:46:43
【问题描述】:
现在我正在处理大于 (1.5 GB) 的大文件。所以我使用了File::Map。当输入大于2.1 GB 时,脚本失败并显示错误Use of uninitialized value $count in print at file.pl line 16.。
但脚本正在运行2.1GB and below 2.1GB
我的脚本如下
use warnings;
use strict;
use File::Map 'map_file';
my $filename ="/root/Desktop/test_sequence/human_genome";
map_file (my $map,$filename);
my $count;
$count++ while ($map=~/>/g);
print $count; #The file has only 14 `>` so result is 14.
同时我在没有模块的情况下尝试了它。它也以同样的错误终止。
use warnings;
use strict;
my $filename ="/root/Desktop/test_sequence/human_genome";
open my $fh,"<",$filename or die "$!";
my $m = do{local $/; <$fh>};
my $count;
$count++ while ($m=~/>/g);
print $count;
不知道这里有什么问题?
【问题讨论】:
-
如果您所做的只是计算
>- 您真的需要将整个文件读入内存吗? -
@Sobrique 我正在尝试在文件中查找重复项。所以我想计算文件中的标题。那我继续。
-
你确定没有事先得到
Use of uninitialized value $map in pattern match (m//)或Use of uninitialized value $m in pattern match (m//)? -
@Borodin,您可能想阅读 OP 的代码。不,这不是我的问题,OP 的代码在这里可以正常工作。我正在尝试找出他的设置中还有什么问题。
-
@Borodin,主题是“我不知道这里有什么问题?”。那么告诉我,这里允许的调查方向是什么?这不是 OP 的代码,也不是
File::Map。我已经验证过了。它在这里按预期工作。你有吗?