Вы неправильно поняли возможность ku
. Это последовательность символов, генерируемая, когда пользователь нажимает клавишу стрелки вверх на терминале. Чтобы на самом деле переместить курсор вверх на экране, вы печатаете возможность up
. (Кроме того, лучше избегать синтаксиса косвенных объектов, хотя это не имеет никакого отношения к вашей проблеме.)
Вот исправленная версия:
#!/usr/bin/env perl
use warnings;
use 5.014;
use Term::Cap;
use POSIX;
my $termios = POSIX::Termios->new;
$termios->getattr;
my $ospeed = $termios->getospeed;
my $terminal = Term::Cap->Tgetent({ TERM => undef, OSPEED => $ospeed });
$terminal->Trequire("up"); # move cursor up
my $UP = $terminal->Tputs("up");
my $t = 500;
while ($t > 0) {
printf "Hour: %d \n", $t/3600;
printf "Minute: %d \n", ($t/60)%60;
printf "Second: %d \n", $t%60;
print $UP,$UP,$UP;
sleep 5;
$t -= 5;
}
Может оказаться полезным руководство Termcap . Он объясняет, что означают все возможности .