use strict; use warnings; use Data::Dumper; my $data = [ { Ad1 => '20 SOUTH CENTRAL #B3', status => 'Property', City => 'NY', zCode => '0002', name => 'John D' }, { Ad1 => '15 SOUTH CENTRAL #B4', status => 'Property', City => 'NY', zCode => '0002', name => 'John V' }, { Ad1 => '100 main St.', status => 'houses', City => 'BO', zCode => '0007', name => 'Mary' }, ]; my @add_ins = grep { $_->{status} eq 'houses' } @$data; my $add_in = $add_ins[0]; foreach my $row (@$data) { $row->{new_name} = $add_in->{name} // ''; $row->{new_Ad1} = $add_in->{Ad1} // ''; $row->{new_City} = $add_in->{City} // ''; $row->{new_zCode} = $add_in->{zCode} // ''; } print Dumper($data); #### $VAR1 = [ { 'name' => 'John D', 'new_zCode' => '0007', 'new_Ad1' => '100 main St.', 'Ad1' => '20 SOUTH CENTRAL #B3', 'zCode' => '0002', 'new_City' => 'BO', 'new_name' => 'Mary', 'status' => 'Property', 'City' => 'NY' }, { 'new_Ad1' => '100 main St.', 'Ad1' => '15 SOUTH CENTRAL #B4', 'name' => 'John V', 'new_zCode' => '0007', 'new_name' => 'Mary', 'new_City' => 'BO', 'status' => 'Property', 'City' => 'NY', 'zCode' => '0002' }, { 'new_Ad1' => '100 main St.', 'Ad1' => '100 main St.', 'name' => 'Mary', 'new_zCode' => '0007', 'new_City' => 'BO', 'new_name' => 'Mary', 'City' => 'BO', 'status' => 'houses', 'zCode' => '0007' } ];