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