for my $id (sort by_name_and_age keys %hash) { print "$hash{$id}{'item'} - $hash{$id}{'name'}\n"; } sub by_name_and_age { # Sort by reversed ASCII order... $hash{$b}{'name'} cmp $hash{$a}{'name'} or # ... or by ascending age value. $hash{$a}{'age'} <=> $hash{$b}{'age'}; }