### do original data open(COMPANIES, "+< ./data1") or die "can't open file: $!"; $co = 0; while () { $contents[$co] = $_; $co++; } foreach $record (@contents) { @fields = split(/\|/,$record); $tidm=$fields[0]; etc... $lse{$tidm}++; } close(COMPANIES); ### do data to be merged open(INFO, "+< ./info.csv") or die "can't open file: $!"; $co2 = 0; while () { $contents2[$co2] = $_; $co2++; } foreach $record2 (@contents2) { @fields2 = split(/\|/,$record2); $tidm_inf=$fields2[0]; etc... $merge{$tidm_inf}="$record2"; } close(INFO); ### print merged foreach my $k (sort keys %lse) { print "$merge{$k}\n"; }