#!/usr/bin/perl -w use strict; my $pat_qfn = '30.txt'; my $in_qfn = 'searchfile.txt'; my $out_qfn = 'newfile.txt'; my $pat; { open(my $pat_fh, '<', $pat_qfn) or die("Can't open pattern file $pat_qfn: $!\n"); chomp( my @pats = <$pat_fh> ); ($pat) = map qr/$_/, join '|', @pats; } open(my $in_fh, '<', $in_qfn) or die("Can't open input file $in_qfn: $!\n"); open(my $out_fh, '>', $out_qfn) or die("Can't create output file $out_qfn: $!\n"); while (<$in_fh>) { print $out_fh $_ if /$pat/; }