premetto che non ho mai lavorato con la funzione sort, quindi firmo il foglio che non mi assumo responsabilità.

codice:
foreach my $k (sort {$a<=>$b} keys %hash ) {
	print "$k $hash{$k}\n";
}
keys restituisce la lista delle chiavi.
La lista viene passata al sort che tramite il blocco li considera numeri. Se togli il blocco vedi che il 10 vieni subito dopo il numero 1 perchè fa l'ordine considerandola una stringa.
Sort ritorna la lista degli indici ordinato in modo crescente.

foreach ritorna le chiavi uno ad uno.

Ciao