开发者

How to print BOLD text in here doc in Perl?

开发者 https://www.devze.com 2023-01-25 04:07 出处:网络
I am using the here doc to print usage messages for the user. Is there a way to print specific words BOLD similar to the man pages on unix. I am using开发者_Python百科 this on Unix. Is there a way to

I am using the here doc to print usage messages for the user. Is there a way to print specific words BOLD similar to the man pages on unix. I am using开发者_Python百科 this on Unix. Is there a way to use Term::ANSIColor(or some other way?) with the here doc?


1) You can simply include ANSI codes into heredoc:

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

2) Heredoc interpolates the variables, so if you include ANSI colors into a variable, it works.

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

3) Building on #2, you can generate ANSI codes via Term::ANSIColor's color() method as a string and use the variable containing that string in the heredoc. Sorry, no working example since I don't have ANSIColor installed but should be obvious.

You may want to store a specific ANSI code in some specific variable and put the actual text in heredoc and sprincle ANSI-code variables there.


You can use the @{[expression]} syntax within a heredoc to evaluate arbitrary code. The output of this little program will look OK if your terminal has a dark background and light foreground color:

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
0

精彩评论

暂无评论...
验证码 换一张
取 消