关于DBM和复杂数据结构的问题
下面是我的一点儿代码,为什么执行结果不对呢?我想让使用DBM代码执行完与不用DBM的一样,请大侠们指点一下吧,先行谢过!
执行结果:
==========================
(
"Group",
"ARRAY(0x8111a94)",
"Users",
"ARRAY(0x815b80c)",
"Links",
"HASH(0x81599b0)",
)
==========================
如果不加DBM,则结果如下:
==========================
(
"Links",
{ "0" => [1, 3, 4], "1" => [2, 1], "2" => [2, 4] },
"Users",
[
{ Mail => "name1\@domain.com", name => "name1" },
{ Mail => "name2\@domain.com", name => "name2" },
{ Mail => "name3\@domain.com", name => "name3" },
{ Mail => "name4\@domain.com", name => "name4" },
{ Mail => "name5\@domain.com", name => "name5" },
],
"Group",
["group1", "group2", "group3", "group4", "group5"],
)
==========================
group2: name3
name2
group1: name2
name4
name5
group3: name3
name5
代码如下:
#!/usr/bin/perl-w
use Data::Dump qw(dump);
dbmopen(%ht,"/home/admin/perl/ht",0666);
$ht{Group}=["group1","group2","group3","group4","group5"];
$ht{Users}=[
{name=>"name1",Mail=>"name1\@domain.com"},
{name=>"name2",Mail=>"name2\@domain.com"},
{name=>"name3",Mail=>"name3\@domain.com"},
{name=>"name4",Mail=>"name4\@domain.com"},
{name=>"name5",Mail=>"name5\@domain.com"},
];
$ht{Links}={0=>[1,3,4],1=>[2,1],2=>[2,4]};
$str = dump(%ht);
print qq/==========================\n/;
print "$str\n\n";
print qq/==========================\n/;
foreach $key (keys %{$ht{Links}}) {
print "$ht{Group}[$key]:";
foreach $arr (@{$ht{Links}{$key}}) {
print "\t${$ht{Users}[$arr]}{name}\n";
}
}
dbmclose(%ht);