use warnings; use strict; my $pat_file = 'pat.txt'; my $file = 'in.txt'; open my $pat_fh, '<', $pat_file or die $!; my @patterns = <$pat_fh>; chomp @patterns; close $pat_fh; open my $fh, '<', $file or die $!; my @exists; while (my $line = <$fh>){ my ($ret) = grep { $line =~ /$_/ } @patterns; push @exists, $ret if $ret; } print "$_\n" for @exists;