Thread Logfile abarbeiten, brauche Denkanstoß
(6 answers)
Opened by FlorianL at 2010-11-19 11:59
Das ganze hat Fehler.
Das wird nur einmal durchlaufen, wenn die Datei "badwords.db" vollständig gelesen ist, wird die Schleife nicht mehr ausgeführt. Weiterhin wird unter Umständen eine Zeile mehrfach ausgeben, wenn in einer Zeile mehrere Wörter, die auf der Suchliste stehen vorkommen. Ich habe das mal kurz etwas umgeschrieben: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #!/usr/bin/perl use warnings; use strict; use FindBin '$Bin'; my $wordsfile="$Bin/badwords.db"; my $logfilepath = "/minecraft/bin/logs/"; my @logfiles = glob("$logfilepath*.log"); open(my $fh, '<', $wordsfile) or die("Error open $wordsfile ($!)"); my @barwords=<$fh>; close($fh); chomp(@barwords); for my $file (@logfiles) { open(my $fh, '<', $file) or die ("Error open $file ($!)"); while(my $line=<$fh>) { if($line=~/Sign|Antigrief/) { print $line; } elsif($line=~/Line/ && grep{$line=~/$_/}@barwords) { print $line; } } } |