>>807
>こうすると、キーを文字コード順で並び替え、

残念。そのままでは並び替えはされません。
文字コード順に並び替えるには、sort をつけるだけでok。

foreach $key (sort keys %hash) {
}

数字順にするには、sortに条件式を指定してやります。

foreach $key (sort { $a <=> $b } keys %hash) {
}