The following test script based on your sample works as expected. Maybe you can modify it to show the problem you see? Keep it as a stand alone test script though!
use strict; use warnings; my @strings = ( "APPCRASH.", "he protected system file.", "EMET_DLL Module logged the following event:.", "your virus/spyware.", "A new process has been created\..", "A service was installed in the system\..", "A scheduled task was created\..", "Logon Type:[\\W]*(3|10).", "\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run.", "service terminated unexpectedly\..", "service was successfully sent a.", "service entered the.", "service was changed from." ); while (defined (my $info = <DATA>)) { for my $string (@strings) { chomp $info; if ($info =~ /\Q$string\E/) { print "Line # $.: '$string' --> '$info'\n"; } } } __DATA__ APPCRASH. nothing to see here Part sentence: service entered the.
You can avoid the explicit loop over strings by constructing a combined match expression:
use strict; use warnings; my @strings = ( "APPCRASH.", "he protected system file.", "EMET_DLL Module logged the following event:.", "your virus/spyware.", "A new process has been created\..", "A service was installed in the system\..", "A scheduled task was created\..", "Logon Type:[\\W]*(3|10).", "\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run.", "service terminated unexpectedly\..", "service was successfully sent a.", "service entered the.", "service was changed from." ); my $match = join '|', map {qr/\Q$_\E/} @strings; while (defined (my $info = <DATA>)) { chomp $info; next if $info !~ /($match)/; print "Line # $.: '$1' --> '$info'\n"; } __DATA__ APPCRASH. nothing to see here Part sentence: service entered the.
In reply to Re: Regex problem i think?
by GrandFather
in thread Regex problem i think?
by StalkinYerMa
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |