#! perl -slw use strict; my $map = { LSS1 => { LUN1 => [ qw[ HOST1 HOST2 HOST3 ] ], LUN2 => [ qw[ HOST1 HOST3 ] ], }, LSS2 => { LUN1 => [ qw[ HOST1 HOST2 HOST3 ] ], LUN2 => [ qw[ HOST1 HOST3 ] ], }, }; for my $L1 ( keys %{ $map } ) { print $L1; for my $L2 ( keys %{ $map->{ $L1 } } ) { print "\t$L2"; print "\t\t$_" for @{ $map->{ $L1 }{ $L2 } }; } } __END__ P:\test>junk4 LSS2 LUN2 HOST1 HOST3 LUN1 HOST1 HOST2 HOST3 LSS1 LUN2 HOST1 HOST3 LUN1 HOST1 HOST2 HOST3