2011-01-05 98 views

回答

12

这是offical FAQ answer减去任何后续编辑。

要清除屏幕,您只需要打印指示终端清除屏幕的特殊序列。一旦你有了这个序列,当你想清除屏幕时输出它。

您可以使用Term::ANSIScreen模块获取特殊序列。导入cls功能(或:screen标签):

use Term::ANSIScreen qw(cls); 
my $clear_screen = cls(); 

print $clear_screen; 

,如果你想处理终端控制的低层次细节Term::Cap模块还可以得到特殊的序列。该Tputs方法返回字符串对于给定的能力:

use Term::Cap; 

$terminal = Term::Cap->Tgetent({ OSPEED => 9600 }); 
$clear_string = $terminal->Tputs('cl'); 

print $clear_screen; 

在Windows上,你可以使用Win32::Console模块。文件句柄要影响输出生成的对象后,调用Cls方法:

Win32::Console; 

$OUT = Win32::Console->new(STD_OUTPUT_HANDLE); 
my $clear_string = $OUT->Cls; 

print $clear_screen; 

如果你有一个命令行程序,没有工作,你可以把它在反引号捕捉不管它输出这样您可以在以后使用它:

$clear_string = `clear`; 

print $clear_string; 
+0

您保存最好的了!捕获“清除”命令行的输出以供以后重复使用是一个很好的窍门,并且做了诀窍。 – dmansfield 2013-11-08 16:38:19

+0

答案中有一个小错误。变量'$ clear_string'获取该值,但当打印具有略微不同名称的变量时,使用'$ clear_screen'。 – bessarabov 2015-07-25 10:59:24

3

Linux用户使用以下命令:

system 'clear'; 
6

最短的操作系统无关的(并且不需要额外的模块安装ations)为我工作方法在Perl Monks thread(即页面发现还包含清除屏幕的其他一些变化):

system $^O eq 'MSWin32' ? 'cls' : 'clear'; 
+0

这对我很好! (OSX) – 2013-08-07 21:03:51