my %hash; map { push( @{ $hash{ $values{$_} } }, $_ ) } keys %values; #### while(my($k,$v)=each%values){push@{$hash{$v}},$k;} #### map{push(@{$hash{$values{$_}}},$_)}keys%values; #### for my $key (reverse sort keys %hash) { print "Level $key:\n", join(", ", @{$hash{$key}}), "\n\n"; }