Что означает очистка
Поскольку уже два ответа неправильно понимают ваш вопрос, позвольте мне указать: слово «очистить» в контексте perl (и не только) означает принудительную распечаткубуферизованный вывод.Чтобы понять, о чем идет речь, попробуйте что-то вроде
for(1..60) {
print "a";
sleep(1);
}
print "\n";
Вопреки ожиданиям, в течение 60 секунд вы не получите никакого вывода, а затем 60 букв a.Это связано с тем, что Perl буферизирует вывод stdout и отправляет его только при новой строке, при закрытии файла или при заполнении буфера.И действие по фактической отправке этого буфера называется сбросом, по той или иной причине.
Установка $ | = 1 ($ | иногда называется AUTOFLUSH, и его установка означает «буфер flush stdout для каждого напечатанного символа»).») Перед этими действиями, как предложено выше, это поведение меняется, но, похоже, оно не связано с реальной проблемой, с которой вы столкнулись.
Очистка экрана
В общем случае нетспособ очистить вывод.В частности, если вы перенаправите скрипт в файл, такой как
perl myscript.pl > somefile.txt
и напечатаете что-то, то это что-то попадет в somefile.txt независимо от того, что вы делаете.
Когда выводом является экран илиКонсоль есть много способов, но они зависят от того, что это за консоль.Во многих случаях отправка в соответствии с предложенным TLP подойдет.В других случаях вы можете использовать управляющие коды терминала (которые упакованы библиотекой curses).
Но также будут случаи, когда это не поможет, например, тот, который я уже упоминал (когда вы выводите в файл) или когда вы используете какую-то несовместимую консоль (часто случается, что скрипт запускается из текстового редактора или IDE).
Итак, подведем итог:
, если вы действительнонеобходимо отменить вывод, пересмотреть свой дизайн,
, если вы пишете какой-нибудь текстовый индикатор выполнения или что-то подобное для интерактивного сценария, используйте \ r или рассмотрите возможность перехода к Curses или, возможно, Term :: экран .Или проверьте доступные модули более высокого уровня, такие как Term :: ProgressBar