電子書籍の厳選無料作品が豊富!

ランキングCGIを作成中なのですが、投票順に並べることは出来たのですが
open (IN,"$selfile") || &error("OPEN ERROR");
while (<IN>) {
($sno,$item,$shop,$url) = split(/<>/);
open (INC,"$base/c$sno.txt") || &error("OPEN ERROR");
($cnt) = split(/<>/,<INC>);
close INC;
$rank{} = $cnt;
}
close IN;
foreach (sort {$rank{$b} <=> $rank{$a}} keys(%rank)) {
$cnt = $rank{$_};
print "$_";
}
これだと$itemだけが$cntを利用して降順で並ぶ形になってしまいます
それに沿って$sno・$shop・$url・$cntも表示されるように並べたいのですがどのようにしたらよいのでしょうか?

テキストデータは下記の通りです
選択肢テキストデータ
$selfile($sno,$item,$shop,$urlの順)
2<>ラーメン<>ラーメン屋<>url2<>
1<>チャーハン<>中華屋<>url1<>
3<>うどん<>日本食屋<>url3<>

カウントテキストデータ
c1.txt→580
c2.txt→230
c3.txt→460
---------------ここまで---------------------

このように出力したいです(|←セル区切りだと思ってください)
1|チャーハン|<a herf="url1">中華屋</a>|580
3|うどん|<a herf="url3">日本食屋</a>|460
2|ラーメン|<a herf="url2">ラーメン屋</a>|230

どの部分をどのように直したら出来るのか教えてくださいませんでしょうか?
よろしくおねがいします

A 回答 (1件)

@InFile = <IN>;


@sortdata = sort { (split(/\,/,$a))[0] <=> (split(/\,/,$b))[0] $InFile;

じゃ駄目??

参考URL:http://www1.parkcity.ne.jp/chaichan/src/perl07.htm

この回答への補足

@sortdata = sort { (split(/\,/,$a))[0] <=> (split(/\,/,$b))[0]} $InFile;
の記述の方はInFileをソートしてから@sortdataに受け渡すという意味だと思うのですが

@InFileの部分はどのように組み込めばよいのでしょうか?
無知で申し訳ありません

補足日時:2010/03/24 18:37
    • good
    • 0
この回答へのお礼

試行錯誤した結果上手く表示することが出来ました

ありがとうございました!

お礼日時:2010/03/25 09:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!