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