#!/usr/bin/perl -w use strict; use Data::Dumper; my %HoA = ( simpsons => [ "homer", "marge", "bart" ], flintstones => [ "fred", "barney" ], jetsons => [ "george", "jane", "elroy", "astro" ], ); # # This is the type of sorting normally needed. # print "Sorted by number of members then name\n"; foreach my $family (sort {@{$HoA{$b}} <=> @{$HoA{$a}} || $a cmp $b } keys %HoA){ print " $family: \t", join(", ", sort @{ $HoA{$family} }), "\n"; } # # Sometimes this sort will be needed. # my @members; # Dump all names into a single array foreach my $family (keys %HoA ) { push (@members, @{$HoA{$family}} ); } #Sort it and find it's family association for printing foreach my $name (sort @members) { foreach my $family (keys %HoA) { foreach my $test (@{$HoA{$family}}) { print " $name : $family\n" if ($test eq $name); } } }