【问题标题】:Color terminal output in PerlPerl 中的彩色终端输出
【发布时间】:2019-01-09 20:08:22
【问题描述】:

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

在 Perl 中最好的方法是什么?我希望有一些类似这样的 API:

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

实施将在不适当时忽略颜色代码。

【问题讨论】:

  • 当我需要它时,它会退回到无颜色吗?从描述来看,听起来不像。

标签: perl terminal ncurses


【解决方案1】:

Term::ANSIColor 生成彩色输出。

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

$ENV{ANSI_COLORS_DISABLED} 动态禁用Term::ANSIColor。

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

【讨论】:

  • 我想补充一下这个出色的答案:确定会话是否是交互式的可能很棘手。 ExtUtils::MakeMaker 包含一个more comprehensive test 用于它的prompt() 函数,而IO::Interactive 包含一组更好的启发式算法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 2011-02-06
  • 2011-05-15
  • 1970-01-01
相关资源
最近更新 更多