Как очистить экран в терминале с помощью Perl? - PullRequest
10 голосов
/ 05 января 2011

Я хотел бы очистить экран в терминале / консоли, используя Perl.Как я могу это сделать?


Это вопрос от официального perlfaq .Мы импортируем perlfaq в Stack Overflow .

Ответы [ 3 ]

12 голосов
/ 05 января 2011

Это официальный ответ на часто задаваемые вопросы минус любые последующие изменения.

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

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

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:

Win32::Console;

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

print $clear_screen;

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

$clear_string = `clear`;

print $clear_string;
6 голосов
/ 30 мая 2012

Самый короткий независимый от ОС (и не требующий установки дополнительных модулей) метод, который работал для меня, был найден в потоке Perl Monks (эта страница также содержит некоторые другие варианты очистки экрана): *

system $^O eq 'MSWin32' ? 'cls' : 'clear';
5 голосов
/ 17 апреля 2011

Пользователи Linux используют следующую команду:

system 'clear';
...