我有一个使用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。