我想要一个获取Perl输出的进度指示器
system('make')
并且对于从make命令输出到STDOUT的每一行,我想输出一个点作为进度指示器。不幸的是,我正在使用Term :: ReadLine :: Gnu Perl mod。
当make命令正在运行时,如何重定向STDOUT以捕获和计算行?
答案 0 :(得分:7)
#!/usr/bin/perl
my $command = "make";
open (my $cmd, "$command |");
while(<$cmd>){
print ".";
}
print "\n";
答案 1 :(得分:4)
make >& >(while read f; do echo -n .; done; echo)
显然这是一个shell解决方案,但作为进度指示器的点是一个点。
当然,您可以在那里贴上一个发球台,以便在出现问题时保存该文件的副本。
由于您似乎不喜欢(既没有投票或接受)shell解决方案出于某些无法解释的原因,这里只是一个纯粹的perl:
if (open(X,"make|")) { local($|)=1; while(<X>) { print "."; } close(X); print "\n";}