2009-07-06 6 views
8

Je voudrais mettre en couleur le texte imprimé sur la console en utilisant la commande d'impression Perl. Dans mon cas, le script ne sera exécuté que sous WinXP-DOS Command Line, mais ce serait génial s'il était indépendant du système d'exploitation bien que je préfère l'attacher à WinXP plutôt que de télécharger un paquet séparé.Comment colorier le texte de sortie du script Perl sous Windows?

Répondre

13

Pour tout terminal prenant en charge ANSI escape codes, vous pouvez utiliser le Term::ANSIColor package disponible sur CPAN.

A partir de la page Wikipedia:

fenêtres console dans les versions de Windows basé sur NT (Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista et Windows Server 2008) faire ne supporte pas nativement les séquences ANSI Escape , bien qu'un support possible soit .

Ne sais pas plus d'informations spécifiques à Windows que cela, je suis un gars POSIX. :-)

+9

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

+1

je foiré autour avec juste en utilisant Term :: ANSIColor mais c'était seulement l'impression des séquences d'échappement ... ne montrant pas correctement les couleurs. J'ai téléchargé et construit le paquet suggéré par Hasturkun (http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/) et tout a commencé à fonctionner. Merci! –

15

Win32::Console - est ici un exemple

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 

Toutefois, ces commandes changent la couleur du texte sur l'écran. Tapez "couleur"? dans la fenêtre DOS pour voir les options de couleur

J'utilise fraise perl sur Windows et je n'ai pas eu le paquet Win32 :: Console. Pour installer ce type de package dans la console:

perl -e shell -MCPAN

installer la console Win32

sortie

6

Voici ce qui fonctionne le mieux pour moi après tout:

1) Installé Win32 :: Console :: ANSI (notez que ce n'est pas la même chose que Win32 :: Console)

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

2) Si ce module est chargé avant Term :: ANSIColor, vous pouvez utiliser l'API Standard :: ANSIColor et cela fonctionne (je l'ai essayé avec Windows 7).

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

print color("blue"), "blue\n", color("reset"); 
print "normal\n"; 
Questions connexes