如何在Windows上为Perl脚本输出文本?

Jes*_*ogt 10 console perl winapi

我想使用Perl打印命令对打印到控制台的文本进行颜色格式化.

在我的情况下,脚本将只在WinXP-DOS命令行下运行,但如果它是独立于操作系统将是很好的,虽然我宁愿将它绑定到WinXP而不是下载一个单独的包.

mph*_*uie 15

Win32 :: Console - 这是一个例子

use Win32::Console;
my $CONSOLE = Win32::Console->new(STD_OUTPUT_HANDLE);
my $attr = $CONSOLE->Attr(); # Get current console colors
$CONSOLE->Attr($FG_YELLOW | $BG_GREEN); # Yellow text on green

print "This is a test\n";

$CONSOLE->Attr($attr); # Set console colors back to original
Run Code Online (Sandbox Code Playgroud)


cdl*_*ary 13

对于任何支持ANSI转义码的终端,您可以使用CPAN上提供的Term :: ANSIColor包.

从维基百科页面:

基于NT(Windows NT 4.0,Windows 2000,Windows XP,Windows Server 2003,Windows Vista和Windows Server 2008)的Windows版本中的控制台窗口本身不支持ANSI Escape序列,但可以提供一些支持.

不知道比Windows更具体的信息,我是一个POSIX人.:-)

  • 另见http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/lib/Win32/Console/ANSI.pm (9认同)

lba*_*scs 7

毕竟,这对我来说最有效:

1)安装Win32 :: Console :: ANSI(注意这与Win32 :: Console不一样)

perl -MCPAN -e shell
cpan> install Win32::Console::ANSI
Run Code Online (Sandbox Code Playgroud)

2)如果该模块期限:: ANSIColor之前加载,你可以使用标准的期限:: ANSIColor API和它的实际工作(我与Windows 7试过).

use Win32::Console::ANSI;
use Term::ANSIColor;

print color("blue"), "blue\n", color("reset");
print "normal\n";
Run Code Online (Sandbox Code Playgroud)