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

4szc88ey  于 2023-11-22  发布在  Perl
关注(0)|答案(2)|浏览(271)

我想使Perl程序打印文本的颜色到终端,但当输出被重定向到文件-相同的文本应该打印没有终端序列。
我很惊讶像下面这样的Perl print语句不会自动完成这件事。

  1. #!/usr/bin/perl -w
  2. use Term::ANSIColor qw(:constants);
  3. $Term::ANSIColor::AUTORESET = 1;
  4. print "Do you wish to operate in ";
  5. print BOLD GREEN "(s)";
  6. print "cript mode or in ";
  7. print BOLD RED "(l)";
  8. print "ive mode ? \n";

字符串
如何在Perl中这样打印?
(The C++库rang像我上面描述的那样智能地打印。

xnifntxz

xnifntxz1#

-t可用于检查句柄是否连接到终端。
你可以在use Term::ANSIColor之前添加以下内容:

  1. BEGIN { $ENV{ NO_COLOR } = 1 if !-t STDOUT; }

字符串

pdtvr36n

pdtvr36n2#

正确的解决方案中有“不”:

  1. BEGIN { $ENV{ NO_COLOR } = 1 if not -t STDOUT; }

字符串

相关问题