my %values = ( foo => 1, bar => 2, baz => 3, ); my %rev_values = do_something(\%values); sub do_something { my $h_ref = shift; my %backwards; foreach my $key (keys %$h_ref) { print "$key => ", $h_ref->{$key}, "\n"; $backwards{$h_ref->{$key}} = $key; } return \%backwards; }