Моя программа (которая написана на Perl, хотя я не думаю, что этот вопрос специфичен для Perl) выводит сообщения о состоянии в одной точке программы в форме Progress: x/yy
, где x
и 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
. Однако, если я пропущу новую строку, выходной буфер никогда не сбрасывается и ничего не печатается.
Какое хорошее решение для этого?