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)
在Perl Monks线程中找到了最适合我的操作系统(并且不需要额外的模块安装)方法(该页面还包含清除屏幕的其他一些变体):
system $^O eq 'MSWin32' ? 'cls' : 'clear';
Run Code Online (Sandbox Code Playgroud)