我的程序(恰好在 Perl 中,虽然我不认为这个问题是 Perl 特有的)在程序中的一个点输出状态消息,形式为Progress: x/yy
wherex
和yy
是一个数字,例如:Progress: 4/38
。
我想在打印新的状态消息时“覆盖”以前的输出,这样我就不会用状态消息填充屏幕。到目前为止,我已经尝试过:
my $progressString = "Progress\t$counter / " . $total . "\n";
print $progressString;
#do lots of processing, update $counter
my $i = 0;
while ($i < length($progressString)) {
print "\b";
++$i;
}
如果我在$progressString
. 但是,如果我省略换行符,则输出缓冲区永远不会被刷新,也不会打印任何内容。
对此有什么好的解决方案?