in reply to A better way for walking through HoHoH ?
Or a callback approach:sub extract { my ($rez) = @_; my @flattened; for my $host ( keys %$rez ) { for my $tgt ( keys %{ $rez->{$host}{tgt} } ) { for my $dev ( keys %{ $rez->{$host}{tgt}{$tgt} } ) { push @rv, [ $tgt, $dev, $rez->{$host}{tgt}{$tgt}{$dev} ]; }}} return @flattened; } for (extract(\%rez)) { my ($tgt, $dev, $val) = @$_; ... }
sub walk(&@) { my ($cb, $rez) = @_; for my $host ( keys %$rez ) { for my $tgt ( keys %{ $rez->{$host}{tgt} } ) { for my $dev ( keys %{ $rez->{$host}{tgt}{$tgt} } ) { $cb->($tgt, $dev, $rez->{$host}{tgt}{$tgt}{$dev}); }}} } walk { my ($tgt, $dev, $val) = @_; ... } \%rez;
|
---|