in reply to Parsing a dataset into an arbitrary sized hash of hashes
$ perl -MData::Dumper -MData::Diver=DiveVal -E 'DiveVal($x = {}, qw(1 +2 3)); say Dumper $x' $VAR1 = { '1' => [ undef, undef, [ undef, undef, undef, undef ] ] };
BTW, I had to rewrite your code to be able to understand what it does:
#!/usr/bin/perl use warnings; use strict; use File::Find; use Data::Dumper; use Data::Diver qw (DiveVal); my @extracted = <DATA>; push @extracted, 'end'; my @currentpath = (); my $structure = {}; for my $i (0 .. $#extracted) { my @list = split /;/, $extracted[$i]; my @list2 = split /;/, $extracted[$i+1]; if ($list2[0] eq 'end') { last } if ($list2[0] gt $list[0]) { push @currentpath, $list[1]; } else { my @req = (@currentpath, $list[1], 'required'); DiveVal($structure, @req) = $list[3]; pop @currentpath if $list2[0] lt $list[0]; } } print Dumper($structure);
Update: See Re^3: Parsing a dataset into an arbitrary sized hash of hashes on how to fix the problem (line 28 of my code).
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Parsing a dataset into an arbitrary sized hash of hashes
by Anonymous Monk on Apr 02, 2014 at 23:35 UTC | |
by choroba (Cardinal) on Apr 02, 2014 at 23:46 UTC | |
by DunLidjun (Acolyte) on Apr 04, 2014 at 14:06 UTC |