--- /dev/null
+#!/usr/bin/perl -w
+use strict qw(subs vars refs);
+###############################################################################
+# V E R S I O N S
+###############################################################################
+my $VERSION = '0.0.2';
+# english only - NB 07.02.14
+# NB 23.11.01
+# - creation !
+###############################################################################
+# G L O B A L E
+###############################################################################
+my ($NAME) = $0 =~ m#([^/]+)$#;
+my %BG = (
+ 'black' => 40,
+ 'red' => 41,
+ 'green' => 42,
+ 'yellow' => 43,
+ 'blue' => 44,
+ 'magenta' => 45,
+ 'cyan' => 46,
+ 'white' => 47,
+ 'default' => 49,
+);
+
+my %FG = (
+ 'black' => 30,
+ 'red' => 31,
+ 'green' => 32,
+ 'yellow' => 33,
+ 'blue' => 34,
+ 'magenta' => 35,
+ 'cyan' => 36,
+ 'white' => 37,
+ 'default' => 39,
+);
+
+my %EFFECT = (
+ 'none' => 0,
+ 'bold' => 1,
+ 'pale' => 2,
+ 'evidence' => 3,
+ 'underline' => 4,
+ 'blink' => 5,
+ 'invert' => 7,
+ 'cache' => 8,
+ 'normal' => 22,
+ 'no_evidence' => 23,
+ 'no_souligne' => 24,
+ 'no_underline' => 24,
+ 'no_clignotant' => 25,
+ 'no_blink' => 25,
+ 'no_inverse' => 27,
+ 'no_invert' => 27,
+);
+###############################################################################
+# V A L E U R P A R D E F A U T
+###############################################################################
+my $VERBOSE = 0;
+my $DEBUG = 1;
+my $PRINT_CODE = 0;
+my $BG = '';
+my $EFFECT = '';
+my $FG = '';
+
+###############################################################################
+# R E C E P E T I O N D E S P A R A M E T R E S
+###############################################################################
+use Getopt::Long qw(:config default no_ignore_case); my %Opt;
+&GetOptions(\%Opt
+ ,'help|h|?!'
+ ,'verbose|v+'
+ ,'version|V!'
+ ,'debug+'
+ ,'background|bg=s'
+ ,'forground|fg=s'
+ ,'effect|ef=s'
+ ,'print-num|n!'
+ ,'all|a!'
+) || exit -1;
+ &help() if $Opt{'help'};
+ &version() if $Opt{'version'};
+ $VERBOSE = $Opt{'verbose'} if defined($Opt{'verbose'});
+ $DEBUG = $Opt{'debug'} if defined($Opt{'debug'});
+ $PRINT_CODE = $Opt{'print-num'} if defined($Opt{'print-num'});
+ $BG = $Opt{'background'} if defined($Opt{'background'});
+ $EFFECT = $Opt{'effect'} if defined($Opt{'effect'});
+ $FG = $Opt{'forground'} if defined($Opt{'forground'});
+
+###############################################################################
+# P R O G R A M M E P R I N C I P A L
+###############################################################################
+my $input = join('',@ARGV) || 'My Text';
+
+if ($Opt{all}) {
+
+ my $length = length($input)+3;
+ #use Data::Dumper; die Dumper(\%BG);
+ #print map { $_ = printf "%-".($length+4)."s |\n", "$_ $BG{$_}" } keys %BG;
+ #exit 0;
+# NB 08.08.14 print map { "$BG{$_}\n"
+
+ #while (my ($name,$value) = each %FG) {
+ for my $name (keys %FG) {
+ my $value = $FG{$name};
+
+ printf "%15s", "$name ($value) | ";
+
+ print in_color($input,{
+ fg => $_,
+ bg => $BG,
+ effect => $EFFECT,
+ num => $PRINT_CODE,
+ }) . "\n";
+
+ }
+
+ exit 0;
+}
+
+print in_color($input,{
+ fg => $FG,
+ bg => $BG,
+ effect => $EFFECT,
+ num => $PRINT_CODE,
+}),"\n";
+
+exit 0;
+
+###############################################################################
+# F O N C T I O N S
+###############################################################################
+sub in_color {
+#------------------------------------------------------------------------------
+# NB 18.11.01
+#------------------------------------------------------------------------------
+my ($txt,$hparam) = @_;
+
+ $hparam->{bg} ||= 'default';
+ $hparam->{fg} ||= 'default';
+ $hparam->{effect} ||= 'normal';
+
+ if ($hparam->{num}) {
+
+ return
+ '\e['
+ . $BG{$hparam->{bg}}
+ . ";",$FG{$hparam->{fg}}
+ . ";",$EFFECT{$hparam->{effect}}
+ . "m",$txt
+ . '\e[0m'
+ ;
+
+ } else {
+
+ return
+ "\e["
+ . $BG{$hparam->{bg}}
+ . ";",$FG{$hparam->{fg}}
+ . ";",$EFFECT{$hparam->{effect}}
+ . "m",$txt
+ . "\e[0m"
+ ;
+ }
+}
+sub version {
+#------------------------------------------------------------------------------
+# Affiche la version
+#------------------------------------------------------------------------------
+ print "$NAME: version [$VERSION]\n";
+exit 0;
+}
+
+sub help {
+#------------------------------------------------------------------------------
+# Affiche l'aide
+#------------------------------------------------------------------------------
+#".join("\n",map(" $_",keys(%BG)))."
+print "Usage: $NAME [OPTION...] [TEXT]
+Transform text in ansi color
+
+-bg, --background: ".join(", ",keys(%BG))."
+-fg, --forground: ".join(", ",keys(%FG))."
+-ef, --effect: ".join(", ",keys(%EFFECT))."
+
+-n, --print-num
+-a, --all Show a sample of each type
+
+-h, -?, --help This help
+-V, --version Version
+-v, --verbose
+-debug, --debug
+";
+exit 0;
+}