如何使用相同的 Perl 语句将彩色文本打印到终端,但将非彩色文本打印到文件?

Jen*_* M. 3 perl

我想让 Perl 程序将彩色文本打印到终端,但是当输出重定向到文件时 - 应该在没有终端序列的情况下打印相同的文本。

我很惊讶像下面这样的 Perl 打印语句不会自动执行此操作。

#!/usr/bin/perl -w

use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;
print "Do you wish to operate in ";
print BOLD GREEN "(s)";
print "cript mode or in ";
print BOLD RED "(l)";
print "ive mode ? \n";
Run Code Online (Sandbox Code Playgroud)

如何在 Perl 中打印这样的内容?

(C++ 库会像我上面描述的那样智能地进行打印。)

ike*_*ami 6

-t可用于检查手柄是否连接到终端。

您可以简单地将以下内容放在之前use Term::ANSIColor

BEGIN { $ENV{ NO_COLOR } = 1 if !-t STDOUT; }
Run Code Online (Sandbox Code Playgroud)