最好是跨平台的东西。
print "\033[2J"; #clear the screen
print "\033[0;0H"; #jump to 0,0
CPAN可能是最好的选择。看看Term::Screen:Uni:
require Term::Screen::Uni;
my $scr = new Term::Screen::Uni;
$scr->clrscr()
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;
use Win32::Console;
$OUT = Win32::Console->new(STD_OUTPUT_HANDLE);
$OUT->Cls;
$clear_string = `clear`;
print $clear_string;
Win32::Console::Cls
不会返回可以保存的值。 - Kevin Pankosystem("clear");
不知道在 Windows 下的等效操作。
编辑:Windows 的等效操作是:
system("cls");
如果您在谈论终端,我建议使用类似Curses库这样的工具。
有一个很好的Curses模块可以访问它,您可以像这样使用:
perl -MCurses -e '$win=new Curses;$win->clear()'
支持Linux和Windows操作系统:
system($^O eq 'MSWin32'?'cls':'clear');
我不同意上面的观点。
#!/usr/bin/perl -w
use strict;
my
( $over, $cleaning );
( $cleaning ) = qq([J\033[H\033[J);
( $over ) = <<EOF;
1. Connecting additional modules = Increase the attack surface.
2. Reduce the Amount of Running Code.
3. Code refactoring.
EOF
print ($cleaning.$over);
__END__
FOO | BAR |
---|---|
\033 | 代表 ESC ANSI 值 27 |
[J | 从当前行擦除屏幕到底部 |
[H | 将光标移动到起始位置 |
$over
部分。它们是将$cleaning
打印到屏幕上的好动机,但并不是真正解决问题的一部分。 - joanis