Не знаю, почему вы хотите использовать Term::Readkey
для очистки экрана. Это определенно не имеет такой возможности. Вы пытаетесь использовать что-то, что является частью стандартной установки Perl? Вы можете использовать Term :: Caps, который является частью стандартной установки Perl. К сожалению, для этого требуется, чтобы файл Termcaps находился в системе, а Windows этого не имеет.
use Term::Cap;
#
# Use eval to catch the error when TERM isn't defined or their is no
# Termcap file on the system.
#
my $terminal;
eval {$terminal = Term::Cap->Tgetent();};
#
# Use 'cl' to get the Screen Clearing sequence
#
if ([email protected]) { #Most likely a Windows Terminal
system('cls'); #We really should be doing the 2 line below
# my $clear = "\e[2J"; #But, it doesn't seem to work.
# print "$clear"; #Curse You! I'll get you yet Bill Gates!
} else { #A Real Computer
my $clear = $terminal->Tputs('cl');
print "$clear";
}
print "All nice and squeeky clean!\n";
Я попробовал распечатать последовательность ANSI Escape, если это был терминал Windows, но, похоже, он не работает.
Ненавижу делать системные вызовы, потому что существует риск для безопасности. Что делать, если кто-то изменил команду cls
?
Я полагаю, что я читал что-то неправильно. Не помню, где. Поэтому я буду придерживаться Term :: Screen и использовать систему («clear») в качестве резервной копии. –