$legacy_data { unique field value across both records } = { 'goodField' => 'I am good!', 'firstField' => 1, 'secondField' => 3 }; $new_data { unique field value across both records } = { 'firstField' => 11, 'secondField' => 33, 'goodField' => 'I am good!' }; $differences = [ firstField, secondField]; #### foreach my $record_id (keys %legacy_data) { my $legacy_data = $legacy_data{$record_id}; my $new_data = $new_data{$record_id}; .... # here go all the tests you said .... }