Perl:动态输出更新

时间:2015-01-23 22:18:38

标签: perl

我的变量$i从1到100.是否可以让页面显示#动态替换之前的#?

假设我有以下代码:

#!/usr/bin/perl

my $i = 0;

for my $i ('1' .. '10') {
    print "$i";
    sleep(1);
}

如何制作而不是打印“12345 ...”,它只是替换之前的#。因此1变为22变为3等等

2 个答案:

答案 0 :(得分:6)

对于像这样简单的东西,你可以使用退格或回车来移回光标。

$| = 1;  # Autoflush.

for my $i (1..10) {
   print("\r", $i);
   sleep(1);
}

print("\n");

答案 1 :(得分:2)

" \ R"将光标返回到行的开头。相反,您可能只想退格最后打印的数字,然后打印下一个......就像这样:

$| = 1;    
my $i = 0;
while ($i < 10) {
    print $i;
    sleep 1; # REPLACE WITH WHATEVER PROCESS YOU NEED TO DO
    print "\b" x length $i++;
}

while循环的最后一行打印一个与刚刚打印的数字长度相同的退格键,然后递增它。这是因为后缀++在评估后递增。