【发布时间】:2016-11-15 11:41:35
【问题描述】:
我试图找到一种在解析日志文件时在命令行上打印进度条的方法。获取日志文件=> foreach 文件 => foreach 行 {do}。
想法:我想在每个“foreach 文件”循环中打印进度条的一部分。含义:如果您只解析 1 个文件,则打印整个栏。当您解析 2 个文件时,为每个文件打印一半的栏,依此类推。您可以在底部找到具体代码。
问题:在所有 foreach 迭代完成后打印输出(打印“*”) - 而不是介于两者之间。详细信息在代码中。
有人知道如何在 foreach 中打印吗?或者可以告诉我问题吗?我不明白:(。
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);
}
}
【问题讨论】:
-
尝试
print "*" x $vari, "\n";或设置$|=1。也许你是suffering from buffering。
标签: perl foreach perl-module progress buffering