配列への参照として最後のキーを使用して、hashrefのhashrefを作成するのに少し助けが必要です。
use Data::Dumper;
my $foo = "a:b:c:d:a";
my $bar = "a:b:c:d:z";
my $hoh = {};
sub createHash {
my ($hoh,$orig,$rest,$last) = @_;
$rest = $rest || $orig;
$_ = $rest;
if (/^(.*?):(.*)$/) {
$hoh->{$1} = $hoh->{$1} || {};
createHash($hoh->{$1},$orig,$2,$1);
}
elsif (defined($last)) {
push (@{$hoh->{value}} , [$rest,$orig]);
}
return $hoh;
}
$hoh = createHash($hoh,$foo,undef);
$hoh = createHash($hoh,$bar,undef);
print Dumper($hoh);
募集内容:
$VAR1 = {
'a' => {
'b' => {
'c' => {
'd' => [
[
'a',
'a:b:c:d:a'
],
[
'z',
'a:b:c:d:z'
]
]
}
}
}
};
これをコードパッドからの出力と比較できます。微妙な違いに注意してください。'd'がarrayrefを持つhashrefである代わりにvalue
、'd'はarrayrefであり、はありませんvalue
。