如何将光标移回终端中的一个位置?

时间:2012-07-12 20:24:12

标签: perl cursor

我想展示一个动画,用于替换角色/|\

我怎么总是写在终端的同一个小区?我需要将光标移回一个位置。

3 个答案:

答案 0 :(得分:5)

大多数终端都会通过向后移动光标来处理退格(chr(8))。关键是禁用缓冲。

use Time::HiRes qw( sleep );

$| = 1;  # Disable buffering on STDOUT.

my $BACKSPACE = chr(0x08);

my @seq = qw( | / - \ );
for (;;) {
   print $seq[0];
   push @seq, shift @seq;
   sleep 0.200;
   print $BACKSPACE;
}

print "$BACKSPACE $BACKSPACE";

答案 1 :(得分:2)

ikegami答案的一个变种:)

use Time::HiRes qw(sleep);
$| = 1;  # Disable buffering on STDOUT ;)

for(1..10) {
    for (qw( | / - \ )) {
        print "$_\b";
        sleep 0.2;
    }
}
print

答案 2 :(得分:1)

我不知道如何在perl中输出内容,但这通常是通过输出退格字符\ b(ASCII代码8)来完成的。例如,在C ++中,这是通过输出char(8)来完成的。