根據我的研究,Perl打印語句中使用的'\ b'字符應該像「退格」一樣,即將光標移回一個字符,並刪除當前字符。出於這個原因,我打算使用此操作在單行上打印操作狀態,並隨着操作的進行而更新。不過,我注意到,雖然光標確實回退,但腳下的字符不會被刪除,因此在較短的打印語句後仍會留有較長的消息。我編了下面的示例代碼來解釋我的發現:perl中的' b'字符是如何工作的?
#!/usr/bin/perl
use strict;
use warnings;
my $m;
#set to nonzero so that the screen will update before \n
local $| = 1;
print "Current number shown: ";
$m = "LONG MESSAGE TEMP";
print $m;
print "\b" x length($m);
foreach(1..22) {
$m = $_;
print $m;
print "\b" x length($m);
#sleep 1; #Uncomment to see updates
}
print "\n";
這是輸出:
Current number shown: 22NG MESSAGE TEMP
如果這確實是「\ B」的正確操作,是有另一種刪除字符以及移回光標的逃生?我想避免使用從當前行開始處開始的'\ r'。否則,我如何錯誤地使用轉義?
這不是Perl的功能。 Perl會輸出八位字節,這取決於他們做任何他們想做的事情。 –
重要說明:'\ b'在perl regex中有完全不同的含義。 –