1
我使用的是DBM::Deep哈希對象,像這樣的工作:DBM ::深不使用Perl散列引用
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對象像常規哈希一樣工作,但是有誰知道是否有更簡單的方法來執行此操作?謝謝!
你的意思是我丟掉了DBM對象,因爲在分配它之後它只是一個普通的perl哈希引用? – srchulo 2012-08-04 00:25:52
@srchulo A-yup。 – tchrist 2012-08-04 00:48:16
是的,替換綁定引用內的散列,而不是用純引用替換綁定的引用。 – zostay 2012-08-04 02:31:22