$totalscoreinv{$key1}{key2}= $totalscore; foreach $keyscore (keys %totalscoreinv){ print OUT "\n\nFirst key:$keyscore\n"; foreach my $keyscore2 (sort by_score keys %{$totalscoreinv{$keyscore}}){ printf(OUT "%30s %s\n", "$keyscore2= ", "$totalscoreinv{$keyscore}{$keyscore2}"); } } sub by_score { $totalscoreinv{$keyscore}{$b}<=>$totalscoreinv{$keyscore}{$a}; }