需要使用T:R:G mod的Perl system()命令的进度指示器

bit*_*ket 4 perl progress-indicator libreadline

我想要一个获取Perl输出的进度指示器

   system('make')
Run Code Online (Sandbox Code Playgroud)

并且对于从make命令输出到STDOUT的每一行,我想输出一个点作为进度指示器.不幸的是,我正在使用Term :: ReadLine :: Gnu Perl mod.

在make命令运行时,如何重定向STDOUT以捕获和计算行?

wes*_*erA 7

#!/usr/bin/perl

my $command = "make";

open (my $cmd, "$command |");
while(<$cmd>){
  print ".";
}
print "\n";
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用一个三参数`open`:`打开我的$ cmd,' - |',$ command或者死!$;`这样更安全,更高效. (3认同)
  • 您需要自动清除STDOUT,否则它会在打印前等待整行点.`使用IO :: Handle; STDOUT->自动冲洗(1)` (3认同)