perlのハッシュのスライスの使い方
以前も書いてたけど、実用的にというか。
例によって神から教えてもらったことです。
- したいこと
my %hash1 = ( k1 => 'v1', k2 => 'v2', k3 => 'v3', );
こんなハッシュを得たとして、こいつから、
( h1 => 'v1', h2 => 'v2', h3 => 'v3', );
みたいに、keyだけが違うハッシュを作りたい。頭悪い方法でやってもいいけど、スマートに行こう。
- コード
use strict; use warnings; use Data::Dumper; my %hash1 = ( k1 => 'v1', k2 => 'v2', k3 => 'v3', ); my %trans = ( k1 => 'h1', k2 => 'h2', k3 => 'h3', ); my %hash2; @hash2{values %trans} = @hash1{keys %trans}; print Dumper \%hash2;
- 実行結果
% perl hash_slice.pl $VAR1 = { 'h1' => 'v1', 'h3' => 'v3', 'h2' => 'v2' };