perl – 打印10GB文件的独特行

前端之家收集整理的这篇文章主要介绍了perl – 打印10GB文件的独特行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个10GB的文件,有2亿行.我需要得到这个文件的唯一行.

我的代码

while(<>) {
     chomp;
     $tmp{$_}=1;
 }
 #print...

我只有2GB内存如何解决这个问题?

解决方法

当我评论David的答案时,数据库是要走的路,但是一个好的可能是 DBM::Deep,因为它的纯Perl,易于安装和使用;它本质上是一个绑定到文件的Perl哈希.
use DBM::Deep;
tie my %lines,'DBM::Deep','data.db';

while(<>) {
    chomp;
    $lines{$_}=1;
}

这基本上是你已经拥有的,但哈希现在是一个与文件(这里是data.db)绑定的数据库,而不是保存在内存中.

猜你在找的Perl相关文章