[追記] reverse() を使う方法の方が速くて簡潔でお勧めです! id:tomi-ru++ あまり必要になるケースは無いと思いますが Tips です。 use strict; use warnings; use Test::More; my %a = ( foo => 1, bar => 2, baz => 3, ); my %b; @b{ values %a } = keys %a; # スライスで入れ替え is_deeply(\%b, { 1 => 'foo', 2 => 'bar', 3 => 'baz', }); done_testing;