シュワルツ変換の不具合
シュワルツ変換の不具合で困っています。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1959574
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1882190
で質問したものです。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
&hoge;
sub hoge{
open(o,"hoge.txt");
@all = <o>;
close(o);
for (@all){
($sentence,$filename) = split(/,/,$_);
$score++;
push @hoge, ($score,$_,"<br>\n");
}
@hoge = map {$_->[0]} sort {$b->[1] <=> $a->[1]} map {[$_, split /,/]}@hoge;
print @hoge;
}
というcgiを作成し、実行してみたのですが望んだ処理が出来ません。
hoge.txtは
,123,abc.txt
,456,def.txt
,789,ghi.txt
,123,jkl.txt
,456,mno.txt
,789,pqr.txt
という内容です。
cgiを実行すると
6 5 4 3 2 1 ,789,pqr.txt
,456,mno.txt
,123,jkl.txt
,789,ghi.txt
,456,def.txt
,123,abc.txt
となってしまいスコアが先頭に集まってしまいます。
シュワルツ変換の行を削除すると
6,789,pqr.txt
5,456,mno.txt
4,123,jkl.txt
3,789,ghi.txt
2,456,def.txt
1,123,abc.txt
こうなるのですが、これをシュワルツ変換を用いて
1,123,abc.txt
2,456,def.txt
3,789,ghi.txt
4,123,jkl.txt
5,456,mno.txt
6,789,pqr.txt
と出力させたいのです。
どこをどのように変えればよいでしょうか。
宜しくお願いします。
お礼
配列!!! がありましたね!!! 使う事が殆どなかったですが、思い出しました。 スッキリして美しい記述で感動しました。 大変助かりました。 どうもありがとうございました!!