Ich versuche, eine Möglichkeit zu finden, eine Fortschrittsleiste in der Befehlszeile während der Analyse von Protokolldateien zu drucken. Erhalte Logfiles => foreach file => foreach line {do}.Drucken funktioniert nicht, während Iterationen in foreach Schleife gehen
Die Idee: Ich möchte in jeder "foreach file" -Schleife einen Teil der Fortschrittsanzeige drucken. Meaing: Drucken Sie den gesamten Balken, wenn Sie nur 1 Datei analysieren. Drucken Sie die Hälfte des Balkens für jede Datei, wenn Sie 2 Dateien usw. analysieren. Sie finden den spezifischen Code unten.
Das Problem: Die Ausgabe (print "*") wird gedruckt, nachdem ALLE foreach Iteration erfolgt sind - nicht dazwischen. Details sind im Code.
Hat jemand eine Idee, wie man innerhalb einer foreach druckt? Oder kann mir das Problem sagen? Ich verstehe es nicht :(.
my @logfiles=glob($logpath);
print "<------------------>\n";
$vari=20/(scalar @logfiles);
foreach my $logfile (@logfiles){
open(LOGFILEhandle, $logfile);
@lines = <LOGFILEhandle>;
print "*" x $vari; #won't work, only after loop. Even a "print "*";" doesn't work
foreach my $line (@lines){
#print "*"; works "in between". print "*" x $vari; does not.
if ($line=~/xyz/){
......
......
}
close(LOGFILEhandle);
}
}
Probieren Sie "print" * "x $ vari," \ n ";' oder setzen Sie $ | = 1. Vielleicht leiden Sie unter Pufferung (http://perl.plover.com/FAQs/Buffering.html). – PerlDuck