есть ли способ добраться с printf
окрашенный вывод?
#!/usr/bin/perl
use warnings;
use strict;
use Term::ANSIColor;
printf "%4.4s\n", colored( '0123456789', 'magenta' );
Вывод: (только новая строка)
Я предполагаю, что вам нужно что-то вроде следующего:
#!/usr/bin/perl
use warnings;
use strict;
use Term::ANSIColor;
print colored( sprintf("%4.4s", '0123456789'), 'magenta' ), "\n";
Вам необходимо изменить свой код, как показано на ниже
printf "%s\n", colored( '0123456789', 'magenta' );
Потому что мы не можем получить первые 4 символа в строке. Если вы передадите строковое значение функции printf , она напечатает значение до нулевого символа . Мы не можем получить первые 4 символа.
Проблема в "%4.4s\n" попробуйте "%s\n" это сработает. причина в том, что цвета являются символами (escape chars) и вы обрезаете их. попробуйте printf "%s\n", length(colored( '0123456789', 'green' )); чтобы лучше понять.