>>479
データの持ち方が変、だと思う。
そのデータなら、
while ( <FILEHANDLE> ) {
chomp;
@line = split /<>/;
push @user, { map { $_=>shift @line } qw( name pts memo ) };
}
こんな風に読み込んで、

$user[$i]->{name}さん。
$user[$i]->{pts}点
備考:$user[$i]->{memo}
とアクセスした方がよくね?
ま、人それぞれだが。

で、このデータの持ち方なら、sortでいける。
@new_user = sort { $a->{pts} <=> $b->{pts} } @user;
降順(点数の高い順)なら、
@new_user = sort { $b->{pts} <=> $a->{pts} } @user;

書き込む時は、
foreach $user ( @user ) {
print FILEHANDLE split /<>/, map { $user->{$_} } qw ( name pts memo );
print FILEHANDLE "\n";
}

現在のデータ形式にこだわりたいのならば、色々方法は思いつくけど、
面倒臭くてバグが入り込みやすいのでオススメできない。