将哈希写入文件的最佳方法

时间:2010-11-27 17:04:51

标签: database perl file hash

根据dbmopen-docu,这个函数已经在很大程度上取代了“tie”函数。 我知道Tie :: File模块通过Perl数组访问磁盘文件的行。 如果我不需要数组但是哈希,我该怎么做呢?

4 个答案:

答案 0 :(得分:4)

您可以使用Storable

 use Storable;
 store \%hash, 'file';
 my $hashref = retrieve('file');

或者如果您需要存储更多数据,请BerkeleyDB

use BerkeleyDB;
use MLDBM qw(BerkeleyDB::Hash) ;
use Storable;


my $env = BerkeleyDB::Env->new(-Home => $home);
tie %store, 'MLDBM', -env => $env;

$store{my_stored_hash} = \%hash;

答案 1 :(得分:2)

核心模块SDBM_File可以将哈希绑定到文件:

use Fcntl;
use SDBM_File;

tie(%h, 'SDBM_File', 'filename', O_RDWR|O_CREAT, 0666) or die $!;
...
...
untie %h;

但是:“......密钥的长度加上其关联值的长度,不得超过1008字节。”

答案 2 :(得分:1)

查看标准的AnyDBM_File模块及其引用的其他文档,以了解使用tie而不是dbmopen的一些示例。

答案 3 :(得分:-10)

将散列写入文件:

open(OUT,">myFile.txt");

foreach my $key (sort keys %hash) {
   print OUT $key.",".$hash{$key}."\n";
}
close(OUT);