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

我的机器Ubuntu 10.04上发生了一些变化,以便重定向的输出包括这些指定颜色的特殊字符。

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

谢谢!

最佳答案

您可以使用IO::Interactive软件包测试是否正在交互式运行:

use IO::Interactive qw(is_interactive);

if (is_interactive())
{
    # show some fancy color
}

使用IO::Interactive(而不是仅使用STDIN运算符测试-t是否是tty)的基本原理是explained by Damian Conway

07-26 08:25