这就是我所拥有的:
use Term::ANSIColor;
print "Blah!".color("green");
输出
Test←[32m
我错过了什么?
答案 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上工作得很好,所以有你的解决方法。