有没有办法获得printf
彩色输出?
#!/usr/bin/perl
use warnings;
use strict;
use Term::ANSIColor;
printf "%4.4s\n", colored( '0123456789', 'magenta' );
输出:(仅换行)
答案 0 :(得分:19)
我假设您需要以下内容:
#!/usr/bin/perl
use warnings;
use strict;
use Term::ANSIColor;
print colored( sprintf("%4.4s", '0123456789'), 'magenta' ), "\n";
答案 1 :(得分:10)
您需要更改代码 以下
printf "%s\n", colored( '0123456789', 'magenta' );
因为我们无法获得前4名 字符串中的字符。如果你给 printf的字符串值 功能它将打印值最多 空字符。我们不能得到第一个 4个字符。
答案 2 :(得分:6)
问题是“%4.4s \ n”尝试“%s \ n”它会起作用。原因是颜色是字符(逃避字符),你正在削减它们。尝试printf“%s \ n”,长度(彩色('0123456789','绿色'));要更好地理解。
答案 3 :(得分:5)
打印彩色输出的最简单方法可以是
use Term::ANSIColor qw(:constants);
print RED, "Stop!\n", RESET;
print GREEN, "Go!\n", RESET;
答案 4 :(得分:2)
如果您想在打印中使用颜色,请执行以下操作:
use Term::ANSIColor qw(:constants);
然后使用特定的颜色名称。
例如:
如果要以绿色粗体颜色打印文本,请使用:
print GREEN BOLD "Passed", RESET;
。
RESET
将颜色重置为正常。
如果要以红色闪烁颜色打印文本,请使用:
print BLINK BOLD RED "Failed!", RESET;
如果要显示进度条,例如使用绿色“框”,请使用:
print ON_GREEN " ", RESET;
另一个问题:如果要在屏幕上重新定位光标,请使用:
print "\033[X;YH";
其中X是行pos而Y是列pos,例如:print "\033[5;7H";
答案 5 :(得分:2)
This is a solution to preserve the space alignment when print multiple value (eg. from DB):
print sprintf("%-10s %-32s %-10s\n",
$row->{id},
$row->{name},
($row->{enabled} ? colored(sprintf("%-10s", 'Enabled'), 'GREEN') : 'Disabled'),
);