2010-11-11 81 views
4

我正在使用这里的文档来打印用户的使用信息。有没有办法打印特定单词BOLD类似于UNIX上的手册页。我在Unix上使用这个。有没有办法使用Term :: ANSIColor(或其他方式?)与这里的文档?如何在Perl中打印BOLD文本?

回答

9

1)你可以简单地包括ANSI代码为定界符:

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

2)定界符内插变量,因此,如果您包括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码:: ANSIColor的color()方法作为一个字符串,并使用包含该字符串变量在定界符。对不起,没有工作的例子,因为我没有安装ANSIColor,但应该是显而易见的。

您可能希望在特定变量中存储特定的ANSI代码,并将实际文本放在heredoc和sprincle ANSI代码变量中。

+0

@DVK:Cool!谢谢 ! – Wilderness 2010-11-11 18:56:56

+0

@DVK:请将分号放在它所属的heredoc标记的旁边。你不应该改变事情发生的地方。 – tchrist 2010-11-11 19:02:42

+0

@tchrist - 完成。没有使用heredocs的年龄,对不起。我很好奇,为什么它在heredoc结束后的分号与分号后的分号一样好? – DVK 2010-11-11 19:37:45

4

您可以在heredoc中使用@{[expression]}语法来评估任意代码。如果您的终端有深色背景和浅色前景色,这个小程序的输出效果会很好:

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

规则:谢谢!这也是一个选项。 – Wilderness 2010-11-12 18:28:40