我從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);
一個不錯的進度指示器現在我想我的命令輸出的輸出和錯誤的記錄。我不是太熟悉的管道輸出,所以我嘗試添加:
print $LOG $cmd
和
print $LOG Dumper(\$cmd)
while循環結束之前。它不起作用。第一輸出
GLOB(0x11df7a0)GLOB(0x11df7a0)GLOB(0x11df7a0)
第二
$VAR1 = \\*{'::$cmd'};
$VAR1 = \\*{'::$cmd'};
$VAR1 = \\*{'::$cmd'};
有誰知道我怎麼可以從管道$ CMD輸出? 實例爲$命令= make命令
Making all in src
make[1]: Entering directory `/tmp'
Making all in include
make[2]: Entering directory '/tmp/2'
...
感謝。 – bitbucket
使用'while(my $ line = ...)' – friedo
@friedo:當然你是對的,那更好 - 我只是不想把這個問題與太多的變化混淆在一起:) – psmears