my $pattern = '\b(?:' . join('|', @tokens) . ')\b'; #### my $pattern = join('|', @tokens); #### my $pattern = '^(?:' . join('|', @tokens) . ')[^a-zA-Z]*$'; #### #!/usr/local/bin/perl use strict; use warnings; if (@ARGV != 3) { print "Usage: $0 \n"; exit; } my ($pattern_filename, $source_filename, $dest_filename) = @ARGV; open my $pattern_fh, '<', $pattern_filename or die "Failed to open $pattern_filename: $!"; my @tokens = (); while (my $line = <$pattern_fh>) { chomp $line; push @tokens, $line; } my $pattern = '^(?:' . join('|', @tokens) . ')[^a-zA-Z]*$'; print "Search pattern: $pattern\n"; open my $infile, "<", $source_filename or die "Failed to open $source_filename: $!"; open my $outfile,">>", $dest_filename or die "Failed to open $dest_filename: $!"; while(my $line = <$infile>) { print "input : $line"; if ($line =~ /$pattern/) { next; } print "output: $line"; print $outfile $line; } close($infile); close($outfile);