use Data::Dumper; # VERSION 1 my $ref_1; $ref_1->{'1'}->{'test1'}->{'key1'} = '1'; $ref_1->{'1'}->{'test1'}->{'key2'} = '2'; $ref_1->{'1'}->{'test1'}->{'key3'} = '3'; $ref_1->{'1'}->{'test2'}->{'key1'} = '4'; $ref_1->{'1'}->{'test2'}->{'key2'} = '5'; $ref_1->{'1'}->{'test2'}->{'key3'} = '6'; $ref_1->{'2'}->{'test1'}->{'key1'} = '1'; $ref_1->{'2'}->{'test1'}->{'key2'} = '2'; $ref_1->{'2'}->{'test1'}->{'key3'} = '3'; $ref_1->{'2'}->{'test2'}->{'key1'} = '4'; $ref_1->{'2'}->{'test2'}->{'key2'} = '5'; $ref_1->{'2'}->{'test2'}->{'key3'} = '6'; foreach my $b1 (keys %{$ref_1->{'1'}}) { if(exists $ref_1->{'2'}->{$b1}) { $ref_1->{'2'}->{$b1}->{'1'} = $ref_1->{'1'}->{$b1}; } } $Data::Dumper::Deepcopy=1; print Dumper $ref_1;