Gary Stainburn <[EMAIL PROTECTED]> wrote:
:
: I liked you program so I took a copy. Then I thought
: I'd use it as an excercise in 'PERL'ifying it. By this
: I mean appling some of the things I've read about
: writing perl scripts, such as removing transient 
: variables where possible, elliminaing variables who's
: sole purpose is to control the program, and above all
: take less typing.
: 
: The only variable I can't seem to get rid of is the 
: $input_line, although I'm sure someone will tell me
: how.
: 

: #!/usr/bin/perl -w
: 
: # Copyright 2003 by Michael Weber
: # Released into the public domain July 2003
: 
: # 'PERLified' by Gary Stainburn July 2003
: 
: use strict;
: 
: die "$0 requires a color file.  See readme.txt for more 
: info.\n" if $#ARGV < 
: 0;
: 
: my %colours=('red'=>"\033[0;31m",
:              'brown'=>"\033[0;33m",
:              'blue'=>"\033[0;34m",
:              'green'=>"\033[0;32m",
:              'cyan'=>"\033[0;36m",
:              'purple'=>"\033[0;35m",
:              'gray'=>"\033[0;37m",
: 
:              'ltred'=>"\033[1;31m",
:              'yellow'=>"\033[1;33m",
:              'ltblue'=>"\033[1;34m",
:              'ltgreen'=>"\033[1;32m",
:              'ltcyan'=>"\033[1;36m",
:              'ltpurple'=>"\033[1;35m",
:              'white'=>"\033[1;37m",
:              'ltgray'=>"\033[0;37m");

    Are gray and ltgray supposed to be the same
value? I found this by using some whitespace:

my %colours = (
    red     => '\033[0;31m',   ltred    => '\033[1;31m',
    green   => '\033[0;32m',   ltgreen  => '\033[1;32m',
    brown   => '\033[0;33m',   yellow   => '\033[1;33m',
    blue    => '\033[0;34m',   ltblue   => '\033[1;34m',
    purple  => '\033[0;35m',   ltpurple => '\033[1;35m',
    cyan    => '\033[0;36m',   ltcyan   => '\033[1;36m',
    gray    => '\033[0;37m',   white    => '\033[1;37m',
    ltgray  => '\033[0;37m',
);


: my $normal="\033[0m";
: 
: my %triggers;
: 
: open (CONF, $ARGV[0]) || die "Can't open config file $ARGV[0], $!\n";
: 
: while (<CONF>) {
:   chomp;
:   my ($trigger,$color)=split(",");
:   $triggers{$trigger}=($colours{$color}) ? $colours{$color} : 
: $colours{"white"};
: }
:   
: close (CONF);
: 
: while (my $input_line = <STDIN>) {
: 
:   foreach (keys %triggers) {
:     $input_line =~ s/($_)/$triggers{$_}$1${normal}/g;
:   }    
:   print $input_line;
: 
: }

    Instead of the foreach loop, we could search
for multiple triggers in the substitution. And
we may as well do it case-insensitively also.

my $regex = join '|', keys %triggers;

while ( <STDIN> ) {
    s/($regex)/$triggers{$1}$1${normal}/iog;
    print;
}


HTH,

Charles K. Clarkson
-- 
Head Bottle Washer,
Clarkson Energy Homes, Inc.
Mobile Home Specialists
254 968-8328







-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to