CGI-BBS > データベース > その他 > 配列のソートの方法を教えてください。


カレッヂ
カレッヂ


質問者 junnitisibasaki  投稿日 5/14(月) 16:09:45
open(DATA "data.txt");
@txt =<DATA>;

@txtの中に例えば

数量、名前、日付等のデータが
2,    ABC,   1/1
1,    DEF    2/1
3,    GHI    3/1

このようなカンマ区切りでデータが入っている場合
数量を基準に配列@txtを並べ替えることは出来るでしょうか? 
回答者 しあわせのツボ  [削除]  投稿日 5/14(月) 17:24:37
@txt = sort { (split(/\,/,$a,3))[0] <=> (split(/\,/,$b,3))[0]; } @txt;
ですかね。
逆順(多い方が先)にしたければ$aと$bを入れ替えて下さい。
質問者 junnitisibasaki  [削除]  投稿日 5/15(火) 12:52:56
しあわせのツボさんへ。
返信ありがとうございました。

もう少し教えていただきたいのですが
@txt = sort { (split(/\,/,$a,3))[0] <=> (split(/\,/,$b,3))[0]; }

の最後の[0]は0列目という意味だと思うのですが
/\,/の\はどういう意味なのでしょうか?

$a,$bを見比べているのは分かるのですが$a、$bを入れ替えると降順でソートできましたがこれは$a、$bというのは何かの決まり文句みたいなものなのでしょうか?

最後の3は何を意味するものなのですか?
是非教えてください。

このページは終了したので返信(回答)は書きこめません

Web裏技