The above answers ('bout ANSIColor) are all you need really. Just for the record I would like to submit a short subroutine that I threw together a long time ago. I use it from time to time in my projects.
(Of course Term::ANSIColor isn't that hard to use in it self, but I like to be able to write short colorcodes). Here goes:
Note: The second parameter to colorparse() should be set to a true value if the output is to be used with Term::ReadLine.
use strict;
use Term::ANSIColor qw/:constants/;
use Carp;
print colorparse("%CThis is bright/bold cyan%n and this is normal text
+.\n");
print colorparse("%RC%Yo%Bl%Mo%Cr%n rocks!\n");
sub colorparse {
my $txt = shift;
my $is_prompt = shift || 0;
if (not defined $txt) {
croak("error: missing parameter\nusage: colorparse(\$txt,\$is_prom
+pt)");
}
my %transtbl = (
k => RESET . BLACK ,
K => RESET . BLACK . BOLD ,
r => RESET . RED ,
R => RESET . RED . BOLD ,
g => RESET . GREEN ,
G => RESET . GREEN . BOLD ,
y => RESET . YELLOW ,
Y => RESET . YELLOW . BOLD ,
b => RESET . BLUE ,
B => RESET . BLUE . BOLD ,
m => RESET . MAGENTA ,
M => RESET . MAGENTA . BOLD ,
c => RESET . CYAN ,
C => RESET . CYAN . BOLD ,
w => RESET . WHITE ,
W => RESET . WHITE . BOLD ,
n => RESET
);
if ($is_prompt) {
$txt =~ s/%([kKrRgGyYbBmMcCwWn])/\001\001$transtbl{$1}\001\002/g;
} else {
$txt =~ s/%([kKrRgGyYbBmMcCwWn])/$transtbl{$1}/g;
}
$txt =~ s/%%/%/g;
return($txt);
}
-- dempa |