【发布时间】:2014-12-24 10:28:12
【问题描述】:
下面的脚本会输出
$VAR1 = {
'tank' => {
'fs' => {
'fs2b' => undef,
'fs2a' => undef,
'fs2c' => undef
}
}
};
我真的想要这样的数组散列散列
$VAR1 = {
'tank' => {
'fs' => [
'fs2a',
'fs2b',
'fs2c'
]
}
};
问题
Data::Diver 将如何实现?
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Data::Diver 'DiveRef';
my @array = ("tank", "tank/fs", "tank/fs/fs2a", "tank/fs/fs2b", "tank/fs/fs2c");
my %hash = ();
foreach my $element (@array) {
DiveRef( \%hash, \( split /\//, $element ) );
}
print Dumper \%hash;
(代码由ysth 在this answer 中提供给另一个问题。)
更新
代码中的数组只是一个例子。真正的数组有大约 100 个元素,所以解决方案不能硬编码。
【问题讨论】:
-
数据结构是否总是HoHoA?
标签: perl