需要使用print命令Term :: ANSIColor生成终端输出的颜色

时间:2010-12-20 02:05:51

标签: perl terminal

这就是我所拥有的:

use Term::ANSIColor;
print "Blah!".color("green");

输出

Test←[32m

我错过了什么?

2 个答案:

答案 0 :(得分:2)

您使用的终端程序不支持ECMA-48颜色转义码。所以它没有给他们任何特殊的处理,而是按原样输出字符。

你缺少什么:一个终端。 xterm,libvte,putty,只是其中的一小部分。

答案 1 :(得分:1)

你在Windows上吗?我很确定Windows shell不符合模块使用的颜色代码。

实际上,它在模块的文档中就是这么说的。

  

请注意,并非所有显示器都符合ISO 6429标准,甚至不符合X3.64标准(或者甚至尝试这样做)。在不支持这些转义序列的显示器上,此模块将无法正常工作,例如Windows NT或Windows 2000下的cmd.exe,4nt.exe和command.com。它们可能只是被忽略,或者它们可能显示为ESC字符后跟一些明显的垃圾。

编辑: 我评论的附录:

C:\>perl -MWin32::Console::ANSI -MTerm::ANSIColor -e "print color(\"green\"), 'test', color(\"reset\");"

在Windows XP,Perl 5.12.1上工作得很好,所以有你的解决方法。