sub invert { my $x = shift; my $y = {}; foreach my $xk1 (keys %$x) { foreach my $xk2 (keys %{$x->{$xk1}}) { $y->{$xk2}{$xk1} = $x->{$xk1}{$xk2}; } } return $y; }