## UNTESTED use strict; my %hash; open(FH,'<','oldfile') or die "$!\n"; foreach () { chomp; my ($key,$data) = split(/\|/,$_,2); $hash{$key} = $data; } close FH; open(NEW,'<','newfile') or die "$_\n"; open(OUT,'>','outfile') or die "$_\n"; foreach () { chomp; my ($key) = split(/\|/,$_,2); if ( exists $hash{$key} ) { print OUT "$hash{$key}\n"; } }