use strict; use warnings; use Tie::File; my %seen; tie my @file1, 'Tie::File', 'file.txt' or die; tie my @file2, 'Tie::File', 'file2.txt' or die; foreach (@file1) { chomp; $seen{$_}++; } for(@file2) { my $key = (split /\|/,$_)[1]; print "$_\n" if $seen{$key}; } untie(@file1); untie(@file2);