提问人:Jennifer M. 提问时间:11/9/2023 更新时间:11/9/2023 访问量:101
如何使用相同的Perl语句将彩色文本打印到终端,但将非彩色文本打印到文件中?
How to print colored text to the terminal, but non-colored to the file with the same Perl statement?
问:
我想让 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";
如何在Perl中像这样打印?
(C++ 库 rang 可以智能打印,就像我上面描述的那样。
答:
6赞
ikegami
11/9/2023
#1
-t
可用于检查句柄是否连接到终端。
您可以简单地将以下内容放在前面:use Term::ANSIColor
BEGIN { $ENV{ NO_COLOR } = 1 if !-t STDOUT; }
0赞
Jennifer M.
11/9/2023
#2
正确的解决方案中包含“not”:
BEGIN { $ENV{ NO_COLOR } = 1 if not -t STDOUT; }
评论
2赞
Dada
11/9/2023
在这种情况下,使用 instead of 不会改变任何内容。not
!
0赞
ikegami
11/9/2023
@Dada,我的帖子最初缺少.!
评论
-t