WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Perlでデータをソートしたい

0:[投稿] kei [2004/04/16 18:59 ][環境:win2k,IE6 UNIX,apache,perl]

@DATA にソートしたいデータが入っています。

//////////////////////////////

00072    2004/05/05    test    test    1    1082107659
00073    2004/05/02    test    dafsasfdsa    1    1082107687
00074    2004/05/06    test    dfasasa    1    1082107706

///////////////////////////////////////////////////////

第二項(日付)でのソートをしたいと思い、
下のように書きました。

    my @dates = map { (split '\t')[1] } @DATA; # 第二項
    my @sorted_DATA = @DATA[sort mysort 0..$#DATA];
    sub mysort { $dates[$b] cmp $dates[$a] } # 第二項の文字列順に

//////////////////////////////////////////////

print @sorted_DATA; としてみると、
依然としてソートされず出力されます。
どこかおかしいでしょうか?

00072    2004/05/05    test    test    1    1082107659
00073    2004/05/02    test    dafsasfdsa    1    1082107687
00074    2004/05/06    test    dfasasa    1    1082107706


何度も見直したのですがどうしても原因がわからないためお尋ねします。
どうぞよろしくお願いします。


1:[質問] kei [2004/04/17 07:35 ]

今まで三行で行なっていたソートを、

my @dates = map { (split '\t')[1] } @DATA; # 第二項
   my @sorted_DATA = @DATA[sort mysort 0..$#DATA];
   sub mysort { $dates[$b] cmp $dates[$a] } # 第二項の文字列順に


下のように一行にまとめたところうまく動作しました。

my @sorted_DATA = sort{(split(/\t/,$b))[1] cmp (split(/\t/,$a))[1]}@DATA;

どこか違いあったのでしょうか?
どうぞよろしくお願いいたします。


2:[回答] AC [2004/04/17 13:53 ]

@dates が mysort関数のスコープからは見えないため、$dates[$x]がundefとなっているからです。
local(@dates);

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World