Какой лучший способ очистить экран в Perl?

В идеале что-то кросс-платформенное.

Ответ 1

CPAN, вероятно, лучший способ. Взгляните на Term:: Screen: Uni:

require Term::Screen::Uni;
my $scr = new Term::Screen::Uni;

$scr->clrscr()

Ответ 2

print "\033[2J";    #clear the screen
print "\033[0;0H"; #jump to 0,0

Ответ 3

Я обычно использую Term::ANSIScreen из CPAN, который дает мне всевозможные полезные функции, связанные с консолью.

use Term::ANSIScreen qw(cls);
cls();

Ответ 4

От perlfaq8 ответ на Как очистить экран:


Чтобы очистить экран, вам просто нужно распечатать специальную последовательность, которая сообщает терминалу очистить экран. После того, как вы получите эту последовательность, выведите ее, когда вы хотите очистить экран.

Вы можете использовать модуль Term:: ANSIScreen для получения специальной последовательности. Импортируйте функцию cls (или тег экрана):

use Term::ANSIScreen qw(cls);
my $clear_screen = cls();

print $clear_screen;

Модуль Term:: Cap также может получить специальную последовательность, если вы хотите иметь дело с деталями управления терминалом низкого уровня. Метод Tputs возвращает строку для данной возможности:

use Term::Cap;

$terminal = Term::Cap->Tgetent( { OSPEED => 9600 } );
$clear_string = $terminal->Tputs('cl');

print $clear_screen;

В Windows вы можете использовать модуль Win32:: Console. После создания объекта для дескриптора выходного файла, который вы хотите изменить, вызовите метод Cls:

use Win32::Console;

$OUT = Win32::Console->new(STD_OUTPUT_HANDLE);
$OUT->Cls;

Если у вас есть программа командной строки, которая выполняет задание, вы можете вызвать ее в обратном направлении, чтобы захватить все, что она выводит, чтобы вы могли использовать ее позже:

$clear_string = `clear`;

print $clear_string;

Ответ 5

Если вы говорите о терминале, я бы использовал что-то вроде Curses lib для этого.

Для доступа к нему есть хороший модуль Curses, который вы можете использовать следующим образом:

perl -MCurses -e '$win=new Curses;$win->clear()'

Ответ 6

В OS X и Linux вы можете использовать следующую команду Perl:

system("clear");

Не знаю, что эквивалент находится под Windows.

Изменить: эквивалент Windows:

system("cls");