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

per*_*faq 10 terminal perl screen

我想使用Perl清除终端/控制台中的屏幕.我怎样才能做到这一点?


这是来自官方perlfaq的问题.我们将perlfaq导入Stack Overflow.

per*_*faq 12

这是官方常见问题解答答案减去任何后续编辑.

要清除屏幕,您只需打印告诉终端清除屏幕的特殊序列.完成序列后,在想要清除屏幕时输出.

您可以使用Term :: ANSIScreen模块来获取特殊序列.导入cls函数(或:screen标记):

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

print $clear_screen;
Run Code Online (Sandbox Code Playgroud)

期限::上限,如果你想处理终端控制的低层细节模块还可以得到特殊的序列.Tputs方法返回给定功能的字符串:

use Term::Cap;

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

print $clear_screen;
Run Code Online (Sandbox Code Playgroud)

在Windows上,您可以使用Win32 :: Console模块.在为要影响的输出文件句柄创建对象后,调用Cls方法:

Win32::Console;

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

print $clear_screen;
Run Code Online (Sandbox Code Playgroud)

如果你有一个命令行程序来完成这项工作,你可以用反引号调用它来捕获它输出的内容,以便你以后可以使用它:

$clear_string = `clear`;

print $clear_string;
Run Code Online (Sandbox Code Playgroud)


evg*_*ny9 6

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

system $^O eq 'MSWin32' ? 'cls' : 'clear';
Run Code Online (Sandbox Code Playgroud)


小智 5

Linux用户使用以下命令:

system 'clear';
Run Code Online (Sandbox Code Playgroud)