use strict; use warnings; my %hash=("one" =>1, "two"=>,2); my %hash_tr_fr=(one=>"une","two"=>"deux"); for my $eng (keys %hash){ $hash{$hash_tr_fr{$eng}}=$hash{$eng}; delete $hash{$eng}; } use Data::Dumper; print Dumper(\%hash);