簡體   English   中英

Berkeley DB中的Perl Complex數據結構

[英]Perl Complex data structure in Berkeley DB

鄉親

有人可以在這里說清楚

這個腳本:

use strict;
use BerkeleyDB;
my $filename = "/tmp/test" ; 
unlink $filename ;
tie my %h, "BerkeleyDB::Hash", -Filename => $filename,-Flags    => DB_CREATE or die   
"Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
$h{id1}{11111}{red}{2222}{3333}=1;
$h{id1}{11111}{red}{2222}{223}=1;
print "$h{id1}{11111}{red}{2222}{3333}";
untie %h ;

刪除警報:“不能使用字符串(”HASH(0x822e638)“)作為HASH引用,而在”./ber2.pl第17行使用“嚴格引用”。

第17行是:$ h {id1} {11111} {red} {2222} {223} = 1;

這有什么問題?

如果我在沒有Berkeley的情況下運行腳本它就像一個魅力,但我需要使用數據庫,因為我有內存問題

請幫忙

你不能這樣做, BerkeleyDB綁定的哈希接口只能存儲普通的標量,而不能存儲引用(所以沒有復雜的數據結構)。 您可以將序列化數據(例如來自StorableStorable在其中,或者具有多個哈希值,並使用其中一些將密鑰存儲到其他哈希值中(盡管如此,您必須完成所有工作才能訪問它)。 或者您可以使用完全不同的東西,如DBM :: DeepKiokuDB (具有BerkeleyDB后端)或DBIx :: Class + SQLite

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM