4

我想展示一个交替角色的动画/|并且\

我应该如何始终在终端的同一个单元格中写作?我需要将光标移回一个位置。

4

3 回答 3

7

大多数终端将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";
于 2012-07-12T20:38:19.753 回答
2

ikegami的答案的一个变种:)

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

for(1..10) {
    for (qw( | / - \ )) {
        print "$_\b";
        sleep 0.2;
    }
}
print
于 2012-07-12T20:59:03.573 回答
1

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

于 2012-07-12T20:26:55.100 回答