带redirect输出的Perl颜色说明符

我有一个使用Term::ANSIColor的Perl脚本。 它曾经是这样的情况,如果我把输出redirect到一个文件> file.txt文件只包含文本,而不是颜色代码^[[0m

在我的机器Ubuntu 10.04上发生了一些变化,例如redirect的输出包含了这些指定颜色的特殊字符。

任何想法如何解决这个问题? 我可以在perl脚本中检测输出redirect并跳过颜色部分吗?

谢谢!

您可以测试您是否使用IO :: Interactive包以交互方式运行:

 use IO::Interactive qw(is_interactive); if (is_interactive()) { # show some fancy color } 

Damian Conway广泛解释了使用IO :: Interactive(而不是仅仅测试STDIN是否为tt运算符)的基本原理。