確認したら、単に @a = sort {$a <=> $b} @a だと文字列値作りやがる。
恥ずかし過ぎるので、ちょっと pp_sort.c 眺めてみた。

>>487-488
@a = sort { 0; $a <=> $b } @a; にすれば、もうちょっと早くなる。

比較部分に付けた 0; は、perlで記述した比較式を使わせるためのおまじない。
(オプティマイザに「複雑な評価式」だと勘違いさせる)