Warum scheint meine while-Schleife einige Match-Werte zu fehlen? Diese Ergebnisausgabe gibt nach dem Lesen der Dateien nicht alle möglichen Werte zurück. Es gibt einige fehlende Werte.Perl Loop filtert nicht richtig Ergebnisse
# str_1,2,3,4 are my search strings
while ($line = <$fh>) {
if ($line !~ /$str_1/ && $line =~ /$str_2/) {
open($fh, '>>report.txt');
print $fh "$file : $line";
close $fh;
}
if ($line !~ /$str_3/ && $line =~ /$str_4/) {
open($fh, '>>report.txt');
print $fh "$file : $line";
close $fh;
}
}
Ausgang:
Number of Attendance = 1 INFO:21
Number of Attendance = 2 INFO:21
Number of Attendance = 1 INFO:21
# There are results such as Number of Attendance = 8 INFO:21 which my code is not able to search.
Zum Beispiel:
#my log file which is the input
Number of Attendance = 1 from XYZ FACI INFO:21
Number of Attendance = 0 from UZQ BLAH INFO:21
Number of Attendance = 8 from WZW BLAH INFO:21
Number of Attendance = 0 from WZW BLAH INFO:21
Number of Attendance = 0 from WZW BLAH INFO:21
Number of Attendance = 0 from WZW BLAH INFO:21
so here my str1 = /Number of Attendance = 0/
str2 = /INFO:21/
#So output for my code now is only
Number of Attendance = 1 from XYZ FACI INFO:21
#But,Expected output should be
Number of Attendance = 1 from XYZ FACI INFO:21
Number of Attendance = 8 from WZW BLAH INFO:21
Ich denke, es ist nur nur einmal alle meine Dateien zu lesen und den ersten Ausgangswert zurückkehrt, anstatt alle möglichen Werte zurückzugeben.
Können Sie bitte explizit den Input erwähnen, exper Ausgabe und die Ausgabe, die dieser Code gibt? – SilentMonk
Weil das Muster in '$ str1' übereinstimmt oder das Muster in' $ str_2' nicht, und weil das Muster in '$ str3' übereinstimmt oder das Muster in' $ str_4' nicht stimmt. – ikegami