I had to make two changes to get this to work: initialize $data and dereference $ref when pushing the "ARRAY VALUES" value.
Adding the data BrowserUK provided in Re: Need help in building a HofHof...ofA, I ended up with the following:
use strict; use warnings; use Data::Dumper; use Data::Diver qw( DiveRef ); my $data = {}; while (<DATA>) { chomp; my @keys = split /:/; my $val = pop(@keys); my $ref = DiveRef( $data, map \$_, @keys ); push @$$ref, $val; } print Dumper($data); __DATA__ gkey01:key1:1 2 3 4 5 6 7 8 gkey02:key1:key2:key3:1 2 3 4 gkey03:key1:key2:key3:key4:1 2 3 4 5 6 7 8 gkey04:key1:key2:key3:1 2 gkey05:key1:key2:key3:key4:1 2 gkey06:key1:key2:key3:key4:key5:1 2 3 gkey07:key1:key2:1 2 3 4 5 6 7 8 9 gkey08:key1:key2:key3:key4:1 2 3 4 5 6 7 gkey09:key1:1 2 3 4 5 6 7 gkey10:key1:1 2 3 4 5 6 gkey11:key1:1 2 3 4 gkey12:key1:key2:1 2 3 4 5 6 7 8 9 10 gkey13:key1:key2:key3:key4:1 2 3 4 gkey14:key1:key2:key3:1 2 gkey15:key1:1 2 3 4 5 6 7 gkey16:key1:key2:1 gkey17:key1:key2:key3:1 2 3 4 5 6 7 8 9 10 gkey18:key1:key2:1 2 3 4 5 6 7 gkey19:key1:key2:key3:1 2 3 4 5 6 7 8 gkey20:key1:key2:1 2 3 4 5 6 7 8 9
After which it produced:
$VAR1 = { 'gkey17' => { 'key1' => { 'key2' => { 'key3' => [ '1 2 3 4 5 + 6 7 8 9 10' ] } } }, 'gkey11' => { 'key1' => [ '1 2 3 4' ] }, 'gkey01' => { 'key1' => [ '1 2 3 4 5 6 7 8' ] }, 'gkey20' => { 'key1' => { 'key2' => [ '1 2 3 4 5 6 7 8 9' ] } }, 'gkey07' => { 'key1' => { 'key2' => [ '1 2 3 4 5 6 7 8 9' ] } }, 'gkey06' => { 'key1' => { 'key2' => { 'key3' => { 'key4' => +{ + 'key5' => [ + '1 2 3' + ] +} } } } }, 'gkey19' => { 'key1' => { 'key2' => { 'key3' => [ '1 2 3 4 5 + 6 7 8' ] } } }, 'gkey16' => { 'key1' => { 'key2' => [ '1' ] } }, 'gkey10' => { 'key1' => [ '1 2 3 4 5 6' ] }, 'gkey18' => { 'key1' => { 'key2' => [ '1 2 3 4 5 6 7' ] } }, 'gkey04' => { 'key1' => { 'key2' => { 'key3' => [ '1 2' ] } } }, 'gkey03' => { 'key1' => { 'key2' => { 'key3' => { 'key4' => +[ + '1 2 3 4 5 6 7 8' +] } } } }, 'gkey05' => { 'key1' => { 'key2' => { 'key3' => { 'key4' => +[ + '1 2' +] } } } }, 'gkey08' => { 'key1' => { 'key2' => { 'key3' => { 'key4' => +[ + '1 2 3 4 5 6 7' +] } } } }, 'gkey12' => { 'key1' => { 'key2' => [ '1 2 3 4 5 6 7 8 9 10' ] } }, 'gkey14' => { 'key1' => { 'key2' => { 'key3' => [ '1 2' ] } } }, 'gkey13' => { 'key1' => { 'key2' => { 'key3' => { 'key4' => +[ + '1 2 3 4' +] } } } }, 'gkey15' => { 'key1' => [ '1 2 3 4 5 6 7' ] }, 'gkey09' => { 'key1' => [ '1 2 3 4 5 6 7' ] }, 'gkey02' => { 'key1' => { 'key2' => { 'key3' => [ '1 2 3 4' ] } } } };
In reply to Re^2: HoH..oA data structure
by ig
in thread HoH..oA data structure
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |