多次元配列でのソート
多次元配列でソートってのを最近perlいじってないので,perlでやってみることにしました.
元はといえば,perlに構造体が無いことをはじめて今日知ったわけですね.まぁ,私がperlを使う場面といったら,なんとなくテキスト処理.しかも,sed&awkで処理できない場合に限っているので,しょうがない.
でだ,構造体のソートがしたかったわけです.
struct hoge { int id; char* moge; char* koge; };
をidでソートみたいにね.で,構造体無いので,みなさんhash使っているようでしたが,別に, use constant XXX;ってので定数が宣言できるようなので多次元配列でべつにいいじゃんということになりました.
use constant ID=0; use constant MOGE=1; use constant KOGE=2; $hoge[0][ID]=1; $hoge[0][MOGE]="moge"; $hoge[0][KOGE]="koge"; $hoge[1][ID]=2; $hoge[1][MOGE]="noge"; $hoge[1][KOGE]="loge"; ...
で,IDでソートしたい場合には,以下のようにします.
@sorted_list = sort {$a->[ID] <=> $b->[ID]} @list;
個人的には,どうも,perlの構文てのはよく分からん.なんで,$a->[ID]なんだろう.$a[ID]とかやって,軽くはまりましたよ.