Печатать больше, чем значения цвета ANSI в Perl - PullRequest
6 голосов
/ 24 февраля 2012

Мне нравится модуль Perl Term::ANSIColor, но можно ли распечатать цвета, отличные от предоставленных?

Я пытаюсь распечатать слова с диапазоном между темно-красным и ярко-зеленым, с приличным количеством шагов между ними. Есть ли способ указать значение RGB или что-то для изменения цвета текста?

Ответы [ 2 ]

10 голосов
/ 24 февраля 2012

Вы используете Term :: ExtendedColor . Вы можете использовать 256 цветов этим модулем.

1 голос
/ 27 февраля 2012

Некоторые терминалы даже принимают полные 8-битные спецификации цвета RGB.

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

Может быть напечатано в rgb(255,100,80) цвете розовый.Зависит от вашего терминала.

Как способ получения значений цвета xterm256 из произвольных комбинаций RGB, вам также может понравиться 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";
}

Я бы вставил сюда вывод, но этосложно передать цвета в комментарии :)

...