use strict; use warnings; my %HoA = ( flintstones => [qw/fred barney george/], jetsons => [qw/george fred elroy/], simpsons => [qw/fred marge bart barney/] ); my %d2; for my $k(keys %HoA){ for (@{$HoA{$k}}){ push @{$d2{$_}}, $k; } } for my $k(sort keys %d2){ next unless $#{$d2{$k}} >0; print "$k:\t (", join (",",sort @{$d2{$k}}),")\n"; }