Perl 中的彩色终端输出

Color terminal output in Perl

我想在终端支持彩色时以彩色打印一些输出到终端,否则以普通方式打印。此外,当程序不是 运行 交互时,我不希望有颜色,例如当通过管道输入 grep 时。

在 Perl 中执行此操作的最佳方法是什么?我希望 API 有点像这样:

printColorMaybe( RED, "Hi", PLAIN, " mom!\n" );

实施将在不合适的情况下忽略颜色代码。

Term::ANSIColor 生成彩色输出。

-t STDOUT 测试标准输出是否打开到终端。

动态禁用 Term::ANSIColor.

use Term::ANSIColor;
$ENV{ANSI_COLORS_DISABLED}++ unless -t STDOUT;
print colored("Hi","red")," mom!\n";