我想用Perl清除终端/控制台中的屏幕。我怎样才能做到这一点?如何使用Perl清除终端中的屏幕?
这是从official perlfaq的问题。我们是importing the perlfaq to Stack Overflow。
我想用Perl清除终端/控制台中的屏幕。我怎样才能做到这一点?如何使用Perl清除终端中的屏幕?
这是从official perlfaq的问题。我们是importing the perlfaq to Stack Overflow。
这是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;
Linux用户使用以下命令:
system 'clear';
最短的操作系统无关的(并且不需要额外的模块安装ations)为我工作方法在Perl Monks thread(即页面发现还包含清除屏幕的其他一些变化):
system $^O eq 'MSWin32' ? 'cls' : 'clear';
这对我很好! (OSX) – 2013-08-07 21:03:51
您保存最好的了!捕获“清除”命令行的输出以供以后重复使用是一个很好的窍门,并且做了诀窍。 – dmansfield 2013-11-08 16:38:19
答案中有一个小错误。变量'$ clear_string'获取该值,但当打印具有略微不同名称的变量时,使用'$ clear_screen'。 – bessarabov 2015-07-25 10:59:24