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

DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^2: Accesing hash of unknown dimension
by Otogi (Beadle) on Mar 20, 2006 at 22:43 UTC
    Yes I realized that later on if you look at my reply to friedo, I should have looked at your answer again :).