Perl sprintf格式化彩色输出

时间:2013-10-29 16:09:25

标签: perl colors formatting printf

如何在此语句中生成固定宽度输出?

use Term::ANSIColor;
printf("%s",sprintf("[%8s]",colored(sprintf("\$%0.2f",$Price),'red')))

%8s对此声明没有任何影响。有没有颜色意识的格式说明符?

1 个答案:

答案 0 :(得分:9)

确实如此,只是改变终端颜色的代码也有宽度,因此传递给第一个sprintf调用的字符串已超过8个字符。尝试使用

sprintf("[%18s]", ...

你会看到一种情感。

但是终端代码的宽度是深奥的,所以你最好在固定宽度格式之外移动颜色编码。

printf("[%s]", colored( sprintf("%8s", sprintf("\$%0.2f",$Price) ),'red') )