Как может я получать цветной вывод с printf и Термином Perl:: ANSIColor?

есть ли способ добраться с printf окрашенный вывод?

#!/usr/bin/perl
use warnings; 
use strict;
use Term::ANSIColor;

printf "%4.4s\n", colored( '0123456789', 'magenta' );

Вывод: (только новая строка)

11
задан brian d foy 3 October 2018 в 20:47
поделиться

3 ответа

Я предполагаю, что вам нужно что-то вроде следующего:

#!/usr/bin/perl
use warnings;
use strict;
use Term::ANSIColor;

print colored( sprintf("%4.4s", '0123456789'), 'magenta' ), "\n";
20
ответ дан 3 December 2019 в 01:08
поделиться

Вам необходимо изменить свой код, как показано на ниже

printf "%s\n", colored( '0123456789', 'magenta' );

Потому что мы не можем получить первые 4 символа в строке. Если вы передадите строковое значение функции printf , она напечатает значение до нулевого символа . Мы не можем получить первые 4 символа.

10
ответ дан 3 December 2019 в 01:08
поделиться

Проблема в "%4.4s\n" попробуйте "%s\n" это сработает. причина в том, что цвета являются символами (escape chars) и вы обрезаете их. попробуйте printf "%s\n", length(colored( '0123456789', 'green' )); чтобы лучше понять.

6
ответ дан 3 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: