Не уверен, почему вы хотите использовать 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 ($@) { #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
?