如何使用printf和Perl的Term :: ANSIColor获得彩色输出?

sid*_*com 11 perl printf colors

有没有办法获得printf彩色输出?

#!/usr/bin/perl
use warnings; 
use strict;
use Term::ANSIColor;

printf "%4.4s\n", colored( '0123456789', 'magenta' );
Run Code Online (Sandbox Code Playgroud)

输出:(仅换行)

hlo*_*dal 19

我假设您需要以下内容:

#!/usr/bin/perl
use warnings;
use strict;
use Term::ANSIColor;

print colored( sprintf("%4.4s", '0123456789'), 'magenta' ), "\n";
Run Code Online (Sandbox Code Playgroud)


mur*_*uga 10

您需要更改以下代码

printf "%s\n", colored( '0123456789', 'magenta' );
Run Code Online (Sandbox Code Playgroud)

因为我们无法获得字符串中的前4个字符.如果将字符串值赋给printf函数,它将打印值最多为null字符.我们无法获得前4个字符.


nir*_*iry 6

问题是"%4.4s \n"尝试"%s \n"它会起作用.原因是颜色是字符(逃避字符),你正在削减它们.尝试printf"%s \n",长度(彩色('0123456789','绿色')); 要更好地理解.


小智 5

打印彩色输出的最简单方法是

use Term::ANSIColor qw(:constants);
print RED, "Stop!\n", RESET;
print GREEN, "Go!\n", RESET;
Run Code Online (Sandbox Code Playgroud)