ArrA = qw(A 1 2 3 4 5); ArrB = qw(B 1 2 5 6); ArrC = qw(C 2 3); for ($i=1; $i < 6; $i++) { push(@{$CAPABILITIES{$ArrA[$i]}}, $ArrA[0]); push(@{$CAPABILITIES{$ArrB[$i]}}, $ArrB[0]); push(@{$CAPABILITIES{$ArrC[$i]}}, $ArrC[0]); } foreach $key (sort (keys %CAPABILITIES)) { print "$key => "; foreach $role (sort @{$CAPABILITIES{$key}}) { print "$role "; } print "\n"; } # Desired Printout =begin COMMENT Key/Value ====================== 1 => A B 2 => A B C 3 => A C 4 => A 5 => A B 6 => B OR Key/Value A B C ====================== 1 X X 2 X X X 3 X X 4 X 5 X X 6 X =end COMMENT =cut