mapを使って配列をハッシュに変換する


# 以下のようなハッシュの配列(@hoge_list)があるとする
[
         {
            'hoge_key' => 'hash1',
            'hoge_id' => 2,
            'hoge_name' => "hogehoge",
          },
          {
            'hoge_key' => 'hash2',
            'hoge_id' => 3,
            'hoge_name' => "gehogeho",
          },
];

# mapを使ってハッシュのハッシュに変換
 my $hoge_hoge = +{ map { $_->{hoge_id} => $_ } @$hoge_list };
# もしくは以下
 my %hoge_hoge = map { $_->{hoge_id} => $_ } @$hoge_list;

# キー順にソートしたい場合はリストにする
 my @hoge_hoge = map { $_->{hoge_id} => $_ } @$hoge_list;

#変換結果($hoge_hoge)
$VAR1 = {
          '2' => {
                     'hoge_key' => 'hash1',
                     'hoge_id' => 2,
            'hoge_name' => "hogehoge",
                   },
          '3' => {
                     'hoge_key' => 'hash2',
                     'hoge_id' => 3,
            'hoge_name' => "gehogeho",
                   },

        };