2012-08-12 39 views
0

編寫Perl代碼。我知道我可以使用期限:: ANSIColor做Ncurses用Perl轉義

print color('red') . 'hello world'; 

然而,在這種情況下我使用的是詛咒庫,我想創建一個標籤,其中有些話是紅色,一些黃色,所有我可以操縱的是一個字符串,我將傳遞給圖書館進行渲染。如果我這樣做

$string = color('red') . 'hello world' . color('yellow') . ' another word'; 

然後當我傳遞$ string到打印庫時,它打印逐字ANSI轉義序列。有沒有辦法做我想做的事,或者我必須手動管理attron()和朋友的標籤圖紙?

在此先感謝。

+0

你可以加入一個小的完整程序來顯示你的問題嗎?我無法根據你在這裏的內容複製它。 – 2012-08-12 14:44:47

回答

0

我在Windows上,它本身不支持ANSI顏色編碼。您必須使用Win32 :: Console :: ANSI。沒有它,下面的代碼會執行你的系統正在做的事情。有了它,顏色就產生了。所以你要麼在Windows上,要麼你的終端不支持ANSI顏色。如果你在Windows上,只需添加Win32模塊。

use strict; 
use warnings; 

use Win32::Console::ANSI; 
use Term::ANSIColor; 

my $string = color('red') . 'hello world' . color('yellow') . ' another word'; 
print $string; 

exit 0; 
+0

事實是,我使用了curses,這就是問題所在:它看起來像ANSI轉義不被curses解釋,並且逐字打印。要在熟食模式下直接在標準終端上打印,Term :: ANSIColor可以正常工作。 – persson 2012-08-13 13:14:41