我有一个不错的进度指示器,来自Need a progress indicator for a Perl system() command using T:R:G mod
open(my $cmd, '-|', "$command $flags_args 2>/dev/null")
or print "\nAttention: Command $command $flags_args failed $!"
and return 1;
while (<$cmd>)
{
$percentage = ($cntr/$lines) * 100;
$percentage = 100 if $percentage > 100;
printf("Progress: %3d%%\r", $percentage);
$cntr++;
}
close($cmd);
现在我想要记录命令输出的 STDOUT 和 STDERR。我对管道输出不太熟悉,所以我尝试添加:
print $LOG $cmd
和
print $LOG Dumper(\$cmd)
在while循环结束之前。它不起作用。第一个输出
GLOB(0x11df7a0)GLOB(0x11df7a0)GLOB(0x11df7a0)
第二
$VAR1 = \\*{'::$cmd'};
$VAR1 = \\*{'::$cmd'};
$VAR1 = \\*{'::$cmd'};
有谁知道我如何从管道 $cmd 获取输出?$command = make 命令的示例
Making all in src
make[1]: Entering directory `/tmp'
Making all in include
make[2]: Entering directory '/tmp/2'
...