in reply to Accesing hash of unknown dimension
Do you want to iterate over the whole thing, or do you have the keys for the node you want to access? If the latter then the code I posted in reply to your question can be used to access the node given the "key path". Otherwise you need to specify your problem a little more accurately.
The following code may help however:
my %data; @{$data{a}{b}{c}{columns}} = [1, 2, 3]; @{$data{a}{b}{c}{values}} = [4, 5, 6]; @{$data{d}{e}{columns}} = [7, 8, 9]; my %leaves; walkHash (\%data); print "columns: "; print "@$_ " for @{$leaves{columns}}; print "\nvalues: "; print "@$_ " for @{$leaves{values}}; sub walkHash { my $subHash = shift; for (keys %$subHash) { if (/columns/) { push @{$leaves{columns}}, @{$subHash->{$_}}; } elsif (/values/) { push @{$leaves{values}}, @{$subHash->{$_}}; } else { walkHash ($subHash->{$_}); } } }
Prints:
columns: 1 2 3 7 8 9 values: 4 5 6
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Accesing hash of unknown dimension
by Otogi (Beadle) on Mar 20, 2006 at 22:43 UTC |