如何在此语句中生成固定宽度输出?
use Term::ANSIColor;
printf("%s",sprintf("[%8s]",colored(sprintf("\$%0.2f",$Price),'red')))
%8s
对此声明没有任何影响。有没有颜色意识的格式说明符?
答案 0 :(得分:9)
确实如此,只是改变终端颜色的代码也有宽度,因此传递给第一个sprintf
调用的字符串已超过8个字符。尝试使用
sprintf("[%18s]", ...
你会看到一种情感。
但是终端代码的宽度是深奥的,所以你最好在固定宽度格式之外移动颜色编码。
printf("[%s]", colored( sprintf("%8s", sprintf("\$%0.2f",$Price) ),'red') )