我正在使用perl脚本开发一个控制台应用程序。在那里我打印过程的状态,如“25%已完成”,“33.33%已完成”等...我正在使用\ r来打印oneline中的语句。但是,虽然执行上一个打印的语句阴影也存在,这给人一种混乱。如何避免以前印刷语句的阴影。示例代码如下所示。
use strict;
$|=1;
my $length=7;
my $progress_limit=100/$length;
my $progress;
for(my $i=1;$i<=$length;$i++){
$progress=$progress_limit*$i;
print "Process completion status\: ".$progress." % Completed \r";
}
谢谢...
答案 0 :(得分:3)
使用固定长度的字符串。 sprintf格式化是实现这一目标的好方法。
use strict;
use warnings FATAL => 'all';
use IO::Handle qw(); STDOUT->autoflush(1);
for my $i (1..7) {
printf "Status: %3d%% completed\r", $i * 100/7;
sleep 1;
}