【Perl,Windows】コマンドプロンプトで色付き文字を使う


l_3e0774cbecb97d5f081d3f535740e885_orig_3576.png

Unix系OSのコンソールと比べると途方もなく貧弱に見えるWindowsのコマンドプロンプトだが、文字に色を付ける機能くらいはちゃんとある。これを、Unix系OSで書き慣れた書式のまま使えるWin32::Console::ANSIというモジュールがお気に入りだ。

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

#!/usr/bin/perl
use utf8;
use strict;
use warnings;
use Perl6::Say;
use Win32::Console::ANSI;
binmode STDOUT => ":raw :encoding(cp932)";
say "\e[1;32mこれは明るい緑です";
say "\e[41m背景を赤にしました";
say "\e[4m強調してみました";
say "\e[7m反転してみました";
say "\e[m元に戻りました";

別のモジュールと組み合わせることで、もう少しわかりやすい表記にもできる。

Term::ANSIColor – search.cpan.org
http://search.cpan.org/~rra/ANSIColor-3.00/ANSIColor.pm

#!/usr/bin/perl
use utf8;
use strict;
use warnings;
use Perl6::Say;
use Win32::Console::ANSI;
use Term::ANSIColor qw! :constants !;
binmode STDOUT => ":raw :encoding(cp932)";
say BOLD GREEN "これは明るい緑です";
say ON_RED "背景を赤にしました";
say UNDERSCORE "強調してみました";
say REVERSE "反転してみました";
say RESET "元に戻りました";

もっとも、このモジュール(Win32::Console::ANSI)は単なる色付き文字のためのモジュールではなく、ANSIコンソールをエミュレートするものだ。カーソル移動を可能にして画面の好きな場所に文字を出力できたりするらしいが、そこまでは試さなかった。

色の付け方も含めて、Unix系OSの解説がそのまま役に立つだろう。

Bash Prompt HOWTO: ANSI エスケープシーケンス: 色とカーソル操作
http://www.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO-5.html

コメントを残す