2009-07-06 10 views
8

Ich möchte den gedruckten Text mit dem Perl-Druckbefehl in der Konsole formatieren.Wie kann ich Ausgabetext von Perl-Skript unter Windows färben?

In meinem Fall wird das Skript nur unter WinXP-DOS Command Line ausgeführt, aber es wäre großartig, wenn es unabhängig vom Betriebssystem wäre, obwohl ich es lieber an WinXP binden würde, als ein separates Paket herunterladen zu müssen.

Antwort

13

Für jedes Terminal, das ANSI escape codes unterstützt, können Sie das Term::ANSIColor package verwenden, das auf CPAN verfügbar ist.

Aus Wikipedia:

Konsolenfenster in Windows-Versionen basierend auf NT (Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista und Windows Server 2008) tun nicht nativ unterstützt ANSI Escape Sequenzen, obwohl einige Unterstützung möglich ist.

Ich weiß nicht mehr Windows-spezifische Informationen als das, ich bin ein POSIX-Typ.

:-)
+9

See http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/lib/Win32/Console/ANSI.pm auch – Hasturkun

+1

ich messed um mit nur mit Term :: Ansicolor aber es druckte nur die Escape-Sequenzen ... die Farben wurden nicht korrekt angezeigt. Ich habe das von Hasturkun vorgeschlagene Paket heruntergeladen und gebaut (http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/) und alles hat angefangen zu arbeiten. Vielen Dank! –

15

Win32::Console - hier ein Beispiel

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 

jedoch die Befehle Textfarbe auf dem gesamten Bildschirm ändern. Typ "Farbe?" im DOS-Fenster zu sehen, Farboptionen

Ich benutze Erdbeere perl auf Windows und ich hatte nicht Win32 :: Console-Paket. Um diesen Pakettyp in der Konsole zu installieren:

perl--MCPAN shell

installieren Win32 :: Console

Ausfahrt

6

Hier ist, was am besten für mich gearbeitet, nachdem alle:

1) Installierte Win32 :: Konsole :: ANSI (beachten Sie, dass dies nicht dasselbe ist wie Win32 :: Konsole)

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

2) Wenn dieses Modul vor Term :: ANSIColor geladen wird, können Sie die Standard Term :: ANSIColor API verwenden und es funktioniert tatsächlich (ich versuchte es mit Windows 7).

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

print color("blue"), "blue\n", color("reset"); 
print "normal\n"; 
Verwandte Themen