如何使用Perl清除终端中的屏幕?

时间:2011-01-05 15:10:42

标签: perl terminal screen

我想使用Perl清除终端/控制台中的屏幕。我怎么能这样做?


这是来自official perlfaq的问题。我们是importing the perlfaq to Stack Overflow

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:6)

Perl Monks thread中找到了与我无关的最短操作系统(并且不需要额外的模块安装)方法(该页面还包含清除屏幕的其他一些变体):

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

答案 2 :(得分:5)

Linux用户使用以下命令:

system 'clear';