No.1ベストアンサー
- 回答日時:
説明用に
・データと添字に同じ値があるので、混同しないように値を変えます。
・そのままでは2種類の$aが出てきてしまうので、リスト変数の名前を変えます。
@l=(5,4,3);
print sort(@l);
http://perldoc.jp/func/sort
sort の後に、関数名やブロックを書くことで、並び換えの順番を制御することができます。
これを使って
「@lの全添字のリストを、その添字に対応した$l[x]の値で比較してソートする」
とすれば、ご希望のものが得られます。
@index=(0,1,2);
@l=(5,4,3);
print sort( { $l[$a] <=> $l[$b] } @index);
#工夫すれば、 @index を使わずに書けます。
# ( http://perldoc.jp/docs/perl/5.20.1/perlop.pod#Ra … )
また、上記URLに、ハッシュのキーをハッシュの値の順番に並べる、という例があります。
> # this sorts the %age hash by value instead of key
> # using an in-line function
> @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
これ応用して、 添字→キー、リストの値→ハッシュの値 と対応させる方法もあります。
%h =( 0=>5,1=>4,2=>3 );
print sort( { $h{$a} <=> $h{$b} } keys %h);
ハッシュのキーと値、ではなく、無名リストで添字と値のペアにする、という方法もあります。
%l =( [0,5],[1,4],[2,3] );
print map {$_->[0]} ( sort( { $a->[1] <=> $b->[1] } @l) );
# sortの結果はリストへのリファレンスになっているので、そこから添字だけ取り出す必要があります。
この回答へのお礼
お礼日時:2016/08/21 12:43
早速の回答、有難う御座います。
@index=(0,1,2);
@l=(5,4,3);
print sort( { $l[$a] <=> $l[$b] } @index);
上記がシンプルで使いたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl perlについての質問 1 2022/10/01 15:38
- Perl perlについて 2 2022/11/18 19:38
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Perl Perlでファイルの末尾から指定文字列を検索してファイルに吐き出したい 4 2022/04/04 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列を変数名として扱う方法
-
動的なハッシュの配列を作成したい
-
ハッシュ検索はなぜ速い
-
まったく同じファイルのハッシ...
-
短いハッシュの作り方
-
ハッシュリストって単にハッシ...
-
データベースでユーザーのパス...
-
静的ハッシュの配列のキーに対...
-
画面を強制的に再描画させる方法
-
DoEventsが必要な理由について
-
VBのReturnの使い方
-
VBAのautofilter、criteriaの配...
-
VBAでの一時停止と再開の方法
-
アクティブセルから、A列最終行...
-
エクセル関数で1〜12の数字がル...
-
Do whileでExitせず、ループの...
-
vbscriptでIE自動入力(途中で...
-
「VC++6」ウィンドウの再描画
-
CSVファイルの特定の行だけを読...
-
delphi の 標準偏差のプログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
チェックデジットについて
-
ハッシュのハッシュを実現したい。
-
まったく同じファイルのハッシ...
-
列挙型と連想配列の違いを教え...
-
重複ファイルを削除したいので...
-
*(アスタリスク)の意味
-
短いハッシュの作り方
-
英語でのシャープとコメの呼び...
-
ハッシュマーク以降のアドレス取得
-
一意(ユニーク)かつ、ソート...
-
Perlは戻り値で、ハッシュや配...
-
ハッシュリストって単にハッシ...
-
ActivePerl がハングアップ
-
多次元配列から重複を削除
-
mapのポインタ
-
Perlのハッシュ変数のソートに...
-
Perlのサブルーチンの引数に配...
-
文字数の短いユニークなID生成
おすすめ情報