- ベストアンサー
データファイルのソート方法について
- perlを使用しているデータファイルのソート方法について質問します。
- ファイルを読み込んで指定された文字列でソートし、同じファイルに格納する方法を知りたいです。
- 具体的なスクリプトの一部として、ファイルの読み込みとソート、書き込みの方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>@result = sort { $a <=> $b } @lines; これでは行を丸ごと、しかも数値として解釈して比較するのでうまくいく道理はないですね。 行のデータから数値を切り出して、それを使ってソートをしないといけません。 たとえばこんな感じ。 use strict; use warnings; use feature ':5.10'; my $file = 'input.txt'; open my $ifh, '<', $file or &error("Can't oepn $file"); my @lines = <$ifh>; close $ifh; say @lines; my @sorted = map { $_->[1] } sort { $a->[0] <=> $b->[0]} map { [(split q{,}, $_)[1], $_] } @lines; say @sorted; input.txtの内容が 田中,4 佐藤,2 鈴木,1 水野,3 とすると実行結果はこうなります 田中,4 佐藤,2 鈴木,1 水野,3 鈴木,1 佐藤,2 水野,3 田中,4 シュオーツ変換とかいうキーワードで検索してみてください。 あるいは親切な回答者が解説してくれるでしょう。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
出力するところなんて質問のポイントとは関係ないところじゃないですか。 print @sorted, "\n"; とでもしてください。
お礼
sakusaker7さん 回答ありがとうございます。 >出力するところなんて質問のポイントとは関係ないところじゃないですか。 申し訳ございません。そうなんですね。 よく調べなくて申し訳ございませんでした。 早速やってみました!! バッチリです!!綺麗にソート出来ました。 これで作業が先に進みます。 助かりました。ありがとうございます。
お礼
sakusaker7さん 回答ありがとうございます。 早速試そうと思ったのですが、私の使用しているサーバーはperlが5.8.8でした。 sayは、5.10以降でないと使用できないのですよね? 調べたらそんなことが書いてあったので。 その場合他の方法はあるのでしょうか? お手数かけます。