[英]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
綁定的哈希接口只能存儲普通的標量,而不能存儲引用(所以沒有復雜的數據結構)。 您可以將序列化數據(例如來自Storable
) Storable
在其中,或者具有多個哈希值,並使用其中一些將密鑰存儲到其他哈希值中(盡管如此,您必須完成所有工作才能訪問它)。 或者您可以使用完全不同的東西,如DBM :: Deep , KiokuDB (具有BerkeleyDB后端)或DBIx :: Class + SQLite 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.