>>444
$score{$name} に点数が入っていて、100点満点だとします。
while( ($n,$s) = each %score) { $inverse{sprintf("%03d $n",$s)} = undef; }
$rank = 0; $last_score = -1;
foreach(sort {$b-$a} keys %inverse ) {
  /(\d+) (.+)/;
  $rank++ if $1 != $last_score;
  $last_score = $1;
  printf("$rank位,$2,%d点\n",$1);
}
てのはどうでしょう。