2012-07-12 79 views
3

我想顯示一個動畫,它可以替換字符/,|\如何將光標移回終端的某個位置?

我該如何總是寫在終端的同一個單元格中?我需要將光標移回到一個位置。

+0

的一個變種,我建議你檢查[ncurses的(http://stackoverflow.com/questions/2907321/ncurses-and-perl-any-guides)圖書館。 – m0skit0 2012-07-12 20:26:57

回答

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"; 
+5

孩子們不要在家裏這樣做! 'print(chr 0x08,(qw(\ |/- ))[$ i ++%4])&&選擇'','','',0.2而++ $ |' – 2012-07-13 02:27:11

1

我不知道如何在perl中輸出東西,但這通常是通過輸出退格字符\ b(ASCII碼8)來完成的。例如,在C++中,這通過輸出char(8)來完成。

2

池上的答案:)

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

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

我寫了我的,所以很容易融入其他碼。 – ikegami 2012-07-12 21:02:24

+0

ofc,你的解決方案是「更好」。在第一次閱讀中只有推剪(伏都教旋轉)不明顯。 ;) – jm666 2012-07-12 21:09:53

+1

btw,爲什麼不呢?推@seq,移@seq; – jm666 2012-07-12 21:18:34

相關問題