※ ChatGPTを利用し、要約された質問です(原文:CGIで複数のデータファイルを利用したソートを行いたい)
CGIで複数のデータファイルを利用したソートを行いたい
このQ&Aのポイント
CGIで複数のデータファイルを利用したソートを行いたいです。投票順に並べることはできましたが、その他のデータも表示されるように並べたいです。
テキストデータに含まれる項目を参照して降順でソートするCGIを作成しています。投票数は正しく並べられていますが、他のデータも一緒に表示されるように変更したいです。
CGIを使って複数のデータファイルをソートしたいです。現在は投票数だけが並び替えられており、他の項目も表示したいと考えています。どのように修正すれば良いでしょうか?
CGIで複数のデータファイルを利用したソートを行いたい
ランキング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
どの部分をどのように直したら出来るのか教えてくださいませんでしょうか?
よろしくおねがいします
お礼
試行錯誤した結果上手く表示することが出来ました ありがとうございました!
補足
@sortdata = sort { (split(/\,/,$a))[0] <=> (split(/\,/,$b))[0]} $InFile; の記述の方はInFileをソートしてから@sortdataに受け渡すという意味だと思うのですが @InFileの部分はどのように組み込めばよいのでしょうか? 無知で申し訳ありません