我正在使用DBM::Deep哈希对象,如下所示:
my $dbm = DBM::Deep->new(
file => "dbm.db",
locking => 1,
autoflush => 1,
type => "DBM::Deep->TYPE_HASH",
);
#code..
$dbm = $hash_reference;
但是,这不起作用。$dbm 在程序期间保存正确的值,但是在它退出后 dbm.db 是空的,当我启动另一个尝试使用 dbm.db 的程序时,里面什么都没有。但是每当我像这样复制哈希引用时(它是一个两级深度哈希):
for my $id (keys %$hash_reference) {
for(keys %{$hash_reference->{$id}}) {
$todo->{$id}->{$_} = $hash_reference->{$id}->{$_};
}
}
然后它将正确复制所有内容,并且在程序执行后这些值仍然存在。DBM 作者似乎强调,尽管他的 DBM::Deep 对象就像常规哈希一样工作,所以有谁知道是否有更简单的方法来做到这一点?谢谢!