Regexp::Assemble would not track the original pattern correctly. I give up, it's too hard for me :(
use Regexp::Assemble;
my $patterns = "/path/to/file.txt";
my $list_regex = Regexp::Assemble->new(file => $patterns);
$list_regex->track( 1 );
open( FILE, "<", "$arg1") or die "$arg1: $!\n";
while (<FILE>) {
if (/$list_regex/) {print "\n$arg1\n$list_regex->matched\n";}
}
close(FILE);
}
Now I have this code but I'm facing a new problem.
In my first example I use both flags /is
I need /s so . to match newlines as well.
I have this
my $patterns = "/path/to/file.txt";
my $arg1 = shift;
open( PATTERNS, "<", $patterns ) or die "$patterns: $!\n";
my @list_patterns = <PATTERNS>;
close PATTERNS;
chomp @list_patterns;
my $regexStr = "(" . join("|", @list_patterns) . ")";
my $list_regex = qr{$regexStr}i;
open( FILE, "<", "$arg1") or die "$arg1: $!\n";
while (<FILE>) {
if (/$list_regex/) {print "\n$arg1\n$1\n";}
}
close(FILE);
Adding s to both
my $list_regex = qr{$regexStr}is;
or
if (/$list_regex/is)
would not solve the problem.
part1.*part2
This pattern working with my original script. .* should match also newline.
fggffgfg
part1
hghggh
ghhggh
hggh
part2
ytyty
This is the last problem, else the script working perfectly and much faster thanks to your advices. I will next take a look at local $/. |