在Perl中打印超过ANSI颜色值

时间:2012-02-24 08:34:38

标签: perl colors ansi-escape

我喜欢Perl的Term::ANSIColor模块,但是可以打印出除提供的颜色以外的其他颜色吗?

我正在尝试打印深红色和亮绿色之间的范围,并且它们之间有相当多的步数。有没有办法提供RGB值或其他东西来改变文本的颜色?

2 个答案:

答案 0 :(得分:10)

您使用Term::ExtendedColor。 您可以使用此模块使用256种颜色。

答案 1 :(得分:1)

有些终端甚至可以接受完整的8位RGB颜色规格。

$ perl -E 'say "\e[38:2:255:100:80mHello\e[m"'
Hello

这可以用rgb(255,100,80)粉红色打印。取决于您的终端。

作为从任意RGB组合中获取xterm256颜色值的一种方法,您可能也喜欢Convert::Color

use strict;
use warnings;

use Convert::Color;
use Convert::Color::XTerm;

foreach my $hue ( map { $_ * 15 } 0 .. 120/15 ) {
   my $c = Convert::Color->new( "hsv:$hue,1,1" );
   my $index = $c->as_xterm->index;
   print "\e[38:5:${index}mHue=$hue\e[m\n";
}

我会在此处粘贴输出,但很难在评论中传达颜色:)