Perl sprintf格式化彩色输出

Jea*_*ean 1 formatting perl printf colors

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

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

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

mob*_*mob 9

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

sprintf("[%18s]", ...
Run Code Online (Sandbox Code Playgroud)

你会看到一种情感.

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

printf("[%s]", colored( sprintf("%8s", sprintf("\$%0.2f",$Price) ),'red') )
Run Code Online (Sandbox Code Playgroud)