2012-08-12 34 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