具有重定向输出的Perl颜色说明符

Mik*_*ail 5 linux bash perl

我有一个使用的Perl脚本Term::ANSIColor.过去,如果我将输出重定向到文件,> file.txt那么文件只包含文本,而不包含颜色代码^[[0m

在我的机器上改变了一些东西,Ubuntu 10.04,这样重定向输出包括指定颜色的这些特殊字符.

知道如何解决这个问题吗?我可以从perl脚本中检测输出重定向并跳过颜色部分吗?

谢谢!

Edw*_*son 6

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

use IO::Interactive qw(is_interactive);

if (is_interactive())
{
    # show some fancy color
}
Run Code Online (Sandbox Code Playgroud)

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

  • 但是,对于一个快速的小脚本,-t STDIN是完全可以接受的.我用它来做任何一次性的颜色. (2认同)