use strict; use strict; use warnings; use Data::Dump qw(pp); my %oldvalue = ( foo => "1", bar => "2", baz => "3" ); my %newvalue = ( foo => "A" ); foreach my $key (keys %oldvalue) { if (exists $newvalue{$key}) { $oldvalue{$key} = $newvalue{$key}; } } pp \%oldvalue; # { bar => 2, baz => 3, foo => "A" }