DBM::Deep не работает с хеш-ссылкой perl

Я использую объект DBM:: Deep hash, например:

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 работают так же, как обычный хеш, так кто-нибудь знает, есть ли более простой способ сделать это? Спасибо!

1 ответ

Решение

Вы выбрасываете объект. Попробуйте это вместо этого:

%$dbm = %$hash_reference;
Другие вопросы по тегам