2009-07-06 14 views
8

私は、Perl印刷コマンドを使ってコンソールに印刷されたテキストを色付けしたいと思います。WindowsのPerlスクリプトから出力テキストを色付けするにはどうすればよいですか?

私の場合、スクリプトはWinXP-DOSコマンドラインでしか実行されませんが、独立したパッケージをダウンロードするよりWinXPに結びつけたいのですが、それがOSに依存しない場合は素晴らしいでしょう。

答えて

13

ANSI escape codesをサポートする端末であれば、Term::ANSIColor packageをCPANで利用できます。 NTに基づいて、Windowsのバージョン で

コンソールウィンドウ(Windows NT 4.0の、Windowsの 2000、Windows XPでは、Windows Server 2003では、 Windows VistaおよびWindows Server 2008) 行いますウィキペディアのページから

ANSI Escape シーケンスをネイティブにサポートしていませんが、一部のサポートは が可能です。

これ以上のWindows固有の情報はわかりません。私はPOSIXの人間です。 :-)

+9

も参照してくださいhttp://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/lib/Win32/Console/ANSI.pm – Hasturkun

+1

:: ANSICOLORが、エスケープシーケンスを印刷していただけで、色が正しく表示されませんでした。私はHasturkun(http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/)によって提案されたパッケージをダウンロードしてビルドし、すべてが動作するようになりました。ありがとう! –

15

Win32::Console - ここしかし、これらのコマンドは、画面全体にテキストの色を変更する例

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 

です。タイプ "color?" DOSウィンドウで色のオプションを表示します

Windowsでstrawberry perlを使用していますが、Win32 :: Consoleパッケージがありませんでした。コンソールでこのパッケージタイプをインストールするには:

のperl -MCPAN -eのWin32 :: Consoleをインストール

シェル

終了

ここ
6

は結局私のために最高の仕事をするものです:

1)Win32 :: Console :: ANSIをインストールしました(Win32 :: Consoleと同じではありません)。

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

2)Term :: ANSIColorの前にこのモジュールが読み込まれていれば、標準のTerm :: ANSIColor APIを使うことができ、実際に動作します(Windows 7で試しました)。私はちょうど用語を使用して周りめちゃめちゃ

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

print color("blue"), "blue\n", color("reset"); 
print "normal\n"; 
関連する問題