シュワルツ変換の不具合
シュワルツ変換の不具合で困っています。
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
と出力させたいのです。
どこをどのように変えればよいでしょうか。
宜しくお願いします。
お礼
なるほど、こういうところで new を使うのですね。 よく分かりました。 ありがとうございました。