如何更新屏幕上的值而不在Perl中清除它?

Ana*_*dan 5 perl

我想在屏幕上显示一组值,并每5秒更新一次该值.我不想清除屏幕.

例如:

小时:1

分钟:30

秒:45

在这里,价值观应相应改变.

我应该如何在Perl中做到这一点?

此致,阿南丹

mob*_*mob 14

您是在谈论如何更好地控制屏幕上打印的内容?那么您可能想查看Term :: Cap模块.

一个穷人在一条线上这样做的方法是\r用来保持覆盖同一条线.

while ($t>0) {
    # note no new line at the end of printf statement
    printf "\rHours: %d  Minutes: %d  Seconds: %d     ", $t/3600, ($t/60)%60, $t/60;
    sleep 5;
    $t -= 5;
}
Run Code Online (Sandbox Code Playgroud)

编辑这是适用于我的系统的东西.您的终端的功能可能会有所不同.

require Term::Cap;
$terminal = Tgetent Term::Cap { TERM => cygwin, OSPEED => 9600 };
$terminal->Trequire("up");  # move cursor up
$UP = $terminal->Tputs("up");
$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;
}
Run Code Online (Sandbox Code Playgroud)


bri*_*foy 12

对于这种事情,我喜欢使用Curses.它也不适合Perl.:)