ソート処理について

[上に] [前に] [次に]
キタロウ 2000/06/06(火) 10:20:13
例えば@matchの配列をlocal($no.$namae,$kana)にわけて
カナ($kana)でソートして配列@matchに返すときどのようにすればいいのでしょうか
説明がへたくそですみませんがどなたか教えてください

Fuji.♪ [E-Mail] [HomePage] 2000/06/06(火) 10:38:45
splitしてまとめてsortしてsplitしてjoinとか・・・もっと綺麗な手段あるな、絶対。 (^_^;
ただ、カナでソートする場合って、必ずしも文字コード順にソートしたい、とは限らないので難しいと思います。
そうなると、結構簡単ではなくなります。 (^^;

キタロウ 2000/06/06(火) 11:13:53
すいません、まとめてというのがちょっとわかりません
foreach $line(@match){
local($touroku,$kaisya,$kana) = split(', ',$line);
        @match = sort($kana);
}
こんなん作ってる自分がつらい・・・

Fuji.♪ [E-Mail] [HomePage] 2000/06/06(火) 13:28:25
まとめてって言うのは、1つの文字列に戻すって事です。
単純連結だと悲しいことになるかもしれませんからsprintf()とかで%60sとかやってやると吉かもしれません。
文字列の内容が$kana,$touroku,$kaisyaの順になっていたら・・・sortしたらあとはsplitして$kanaのゴミを取るだけです。

TYuuki [E-Mail] 2000/06/06(火) 13:35:34
もう少し具体的に @match の内容を教えていただけませんでしょうか?
そうでないとどうにも...(^^)>
思うに、
仮に @match の中の各要素が、
@match = ("1,US,Bill","2,Japan,Mori","3,England,Joseph","4,Portogal,Joan");
のような内容だったとすると
各要素(例えば"1,US,Bill")の,(comma)で区切られた二番目の要素でソートするには、
@match = map{$_->[0]} sort{$a->[1] cmp $b->[1]} map{[$_,(split(/,/,$_))[2]]} @match;
でいいと思いますが、どうでしょう???(まったく的外れな回答ならごめんなさい)

キタロウ 2000/06/06(火) 14:04:30
ご返事ありがとうございます。@matchの中には<!-- 1 -->, 山本, やまもと,大阪府,・・・という順番で
txtデータを受け取っています.$kanaはやまもとの部分です。
$kasiramoji = substr $kana,0,4で取り出しソート処理行いたいと思っております。
勉強不足でFujiさんとTYuukiさんの返答でわからない事がありますが
がんばりたいと思います。

TYuuki [E-Mail] 2000/06/06(火) 14:08:04
すみませんっ
>各要素(例えば"1,US,Bill")の,(comma)で区切られた二番目の要素でソートするには、
>@match = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map{[ $_ , (split(/,/ , $_))[2] ] } @match;
>でいいと思いますが、どうでしょう???(まったく的外れな回答ならごめんなさい)

上の二行目「二番目の要素でソートするには、」は誤りで、正しくは
「三番目の要素でソートするには、」
でした。申し訳在りません。

TYuuki [E-Mail] 2000/06/06(火) 14:08:11
すみませんっ
>各要素(例えば"1,US,Bill")の,(comma)で区切られた二番目の要素でソートするには、
>@match = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map{[ $_ , (split(/,/ , $_))[2] ] } @match;
>でいいと思いますが、どうでしょう???(まったく的外れな回答ならごめんなさい)

上の二行目「二番目の要素でソートするには、」は誤りで、正しくは
「三番目の要素でソートするには、」
でした。申し訳在りません。

キタロウ 2000/06/06(火) 15:03:23
[[解決]]
TYuukiさんのソースをそのまま使わしていただきました。
うまく並べ替えられていたので感動しました。
今からソースの解析をして使いこなせるようがんばります。
TYuukiさんFujik.♪さんありがとうございました。

TYuuki [E-Mail] 2000/06/07(水) 11:34:19
([解決]済みのものにも投稿していいのかな?)

えーっと、二重投稿して済みませんでした。(^^; > 管理人様

とりあえず解決してよかったですね♪
WEB では、
http://www.5sigma.com/perl/schwtr.html
なんかが参考になると思いますよ。
(英語ですが、map,sort,reference について基礎的な知識があれば、
読み進めるのにそう難しい事はないと思います)

それでは、頑張ってください。(^^)/

[上に] [前に] [次に]