2010-11-11 78 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