2012-02-24 10 views
6

Uwielbiam moduł Perla za Term::ANSIColor, ale czy możliwe jest drukowanie kolorów innych niż dostarczone?Wydrukuj więcej niż wartości kolorów ANSI w Perlu

Próbuję wydrukować słowa z zakresu od głębokiej czerwieni do jasnozielonej, z przyzwoitą liczbą kroków między nimi. Czy istnieje sposób na podanie wartości RGB lub coś, co zmieni kolor tekstu?

Odpowiedz

10

Używasz Term::ExtendedColor. Możesz użyć 256 kolorów przez ten moduł.

+1

Warto zauważyć, że wyświetlane kolory zależą od terminala używanego przez OP. –

1

Kilka terminali akceptuje nawet pełne 8-bitowe specyfikacje kolorów RGB.

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

Można to wydrukować w kolorze rgb(255,100,80) w kolorze różowym. Zależy od twojego terminalu.

Jako sposób uzyskania xterm256 wartości kolorów z dowolnych kombinacji RGB, to polubisz też 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"; 
} 

bym wklej wyjście tutaj, ale trudno przekazać kolory w komentarzu :)

Powiązane problemy