Обновить вывод командной строки

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

What ' хорошее решение для этого?

10
задан yavoh 15 February 2011 в 20:41
поделиться