Как напечатать текст BOLD здесь в Perl? - PullRequest
4 голосов
/ 11 ноября 2010

Я использую здесь документ для печати сообщений об использовании для пользователя.Есть ли способ напечатать определенные слова BOLD , аналогичные man-страницам в unix.Я использую это на Unix.Есть ли способ использовать Term :: ANSIColor (или каким-либо другим способом?) С здесь документа?

Ответы [ 2 ]

9 голосов
/ 11 ноября 2010

1) Вы можете просто включить коды ANSI в heredoc:

print <<EOD;
XXXX\033[1;30;40m YYYY\033[1;33;43m ZZZZ\033[0mRESET
EOD

2) Heredoc интерполирует переменные, поэтому, если вы включаете цвета ANSI в переменную, это работает.

my $v="xxxxx";
$var = "\nXXXX\033[1;30;40m YYYY\033[1;33;43mZZZZ\033[0mRESET\n";
print <<EOD;
$var
EOD

3) Опираясь на # 2, вы можете генерировать коды ANSI с помощью метода color() Term :: ANSIColor в качестве строки и использовать переменную, содержащую эту строку в heredoc .К сожалению, нет рабочего примера, так как у меня не установлен ANSIColor, но это должно быть очевидно.

Возможно, вы захотите сохранить определенный код ANSI в какой-то конкретной переменной и поместить фактический текст в переменные кода heredoc и sprincle ANSI-кода.есть.

4 голосов
/ 12 ноября 2010

Вы можете использовать синтаксис @{[expression]} в heredoc для оценки произвольного кода.Вывод этой маленькой программы будет выглядеть нормально, если ваш терминал имеет темный фон и светлый цвет переднего плана:

use Term::ANSIColor;

print <<EOF;
I am using the here doc to print usage messages 
for the user. Is there a way to print @{[colored['bright_white'],'specific words']} 
BOLD similar to the man pages on unix. I am using 
this on Unix. Is there a way to use Term::ANSIColor
(or some other way?) with the here doc?
EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...