2009-07-06 14 views

Odpowiedz

13

Dla każdego terminalu obsługującego ANSI escape codes można użyć Term::ANSIColor package dostępnego na CPAN.

Na stronie Wikipedia:

okna konsoli w wersji Windows opartych na NT (Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista i Windows Server 2008) zrobić nie obsługuje natywnie sekwencji ANSI Escape , ale możliwe jest pewne wsparcie w postaci .

Nie znam więcej informacji specyficznych dla systemu Windows, jestem facetem POSIX. :-)

+9

Zobacz również http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/lib/Win32/Console/ANSI.pm – Hasturkun

+1

zawiedli wokół z użyciem tylko Term :: ANSIColor ale to było tylko drukowanie sekwencji ucieczki ... niepoprawne pokazywanie kolorów. Pobrałem i zbudowałem pakiet sugerowany przez Hasturkun (http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/) i wszystko zaczęło działać. Dzięki! –

15

Win32::Console - oto przykład

use Win32::Console; 
my $CONSOLE = Win32::Console->new(STD_OUTPUT_HANDLE); 
my $attr = $CONSOLE->Attr(); # Get current console colors 
$CONSOLE->Attr($FG_YELLOW | $BG_GREEN); # Yellow text on green 

print "This is a test\n"; 

$CONSOLE->Attr($attr); # Set console colors back to original 
1
system("color A"); #DOS command, change text color to lime 

system("color 7"); #DOS command, change text color to white 

Jednak te polecenia zmienić kolor tekstu na całym ekranie. Wpisz "kolor?" w oknie DOS, aby zobaczyć opcje kolorów

Używam perl truskawek w systemie Windows i nie miałem pakietu Win32 :: Console. Aby zainstalować ten typ opakowania w konsoli:

Perl -MCPAN -e shell

zainstalować Win32 :: Konsola

wyjście

6

Oto co pracował dla mnie najlepsza po wszystkim:

1) Zainstalowany system Win32 :: Console :: ANSI (zauważ, że to nie to samo co Win32 :: Console)

perl -MCPAN -e shell 
cpan> install Win32::Console::ANSI 

2) Jeśli ten moduł zostanie załadowany przed Term :: ANSIColor, możesz użyć standardowego Term :: ANSIColor API i faktycznie działa (próbowałem go z Windows 7).

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

print color("blue"), "blue\n", color("reset"); 
print "normal\n"; 
Powiązane problemy