if (/($regex_string)/is) { #### while (/$regex_string)/isg) { print "\nmatched in $arg1:\n==$1==\n"; } #### part1.*?part2 part1.*?part2 Foo bar Other pattern #### hghghgghghh part1 fff part2 blah blah Foo bar more noise Other pattern another match for part1 stuff I don't want to see part2 blabla #### #!/usr/bin/perl -w use strict; my $patterns = "patterns.txt"; my $arg1 = shift; my $regex_string = ''; my %patterns; open (PAT, '<', $patterns) or die "$patterns: $!\n"; while () { chomp; my ( $pattern, $replace ) = split '\t'; $patterns{$pattern} = $replace if ( $replace ); $regex_string .= $pattern . '|'; } close(PAT); chop $regex_string; # remove string-final '|'; open( FILE, "<", "$arg1") or die "$arg1: $!\n"; $_ = do { local $/; }; close(FILE); while ( /($regex_string)/gis ) { my $match = $1; for my $replc ( keys %patterns ) { last if ( $match =~ s/$replc/$patterns{$replc}/is ); } print "\nmatched in $arg1:\n==$match==\n"; }