c:\@Work\Perl\monks>perl -wMstrict -MData::Dumper -le "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' }, ]; ;; foreach my $hr_row (@$data) { if ($hr_row->{ 'status' } eq 'houses') { my $name = $hr_row->{ 'name' } || ''; my $ad1 = $hr_row->{ 'Ad1' } || ''; my $town = $hr_row->{ 'City' } || ''; my $zcode = $hr_row->{ 'zCode' } || ''; ;; @{ $hr_row }{ qw(new_name new_ad1 new_City new_z_code) } = ( $name, $ad1, $town, $zcode ); } } ;; print Dumper $data; " $VAR1 = [ { 'status' => 'Property', 'name' => 'John D', 'Ad1' => '20 SOUTH CENTRAL #B3', 'City' => 'NY', 'zCode' => '0002' }, { 'status' => 'Property', 'name' => 'John V', 'Ad1' => '15 SOUTH CENTRAL #B4', 'City' => 'NY', 'zCode' => '0002' }, { 'new_City' => 'BO', 'status' => 'houses', 'new_ad1' => '100 main St.', 'name' => 'Mary', 'Ad1' => '100 main St.', 'City' => 'BO', 'new_z_code' => '0007', 'new_name' => 'Mary', 'zCode' => '0007' } ];