Hi, David, et. al.

I probably should have given a little more info on what I want this
program to do.  See below...

>>>> "David le Blanc" <[EMAIL PROTECTED]>
03/05/04 03:26AM >>>
>> -----Original Message-----
>> From: WC -Sx- Jones [mailto:[EMAIL PROTECTED] 
>> Sent: Friday, 5 March 2004 4:16 AM
>> To: Michael Weber
>> Cc: [EMAIL PROTECTED] 
>> Subject: Re: Handling blank lines in while(<CONF>) construct
>> 
>> As far as this:
>> 
>> "$yellow")}
>>          elsif ( $conf_line[1] =~ "blue" ) {push(@color_array,
>> 
>> Why not just:
>> 
>> sub push_Colors() {
>>      my $color = shift;
>>      push(@color_array,$color)
>> }
>> 
>> Called like:
>> 
>> push_Colors($conf_line[1]);
>
>
>I thought he was pushing '$yellow' when he found 'yellow'.  
>

Actually, the variable, along with all the other colors, is assigned
above the snippet of code like this...

my $yellow="\033[1;33m";

This is the terminal code to produce a yellow text output.

>Your code would just push the word found (ie, literal 'yellow')
>
>I think...<
>

What it creates is "${yellow}string${normal}" from "string".  See
below...

>>One of us is confused ;-)
>>
>
>> 
>> Unless of course your data input just has a color embedded:
>> sometextcolorredorbluebutwhoknows...

Pretty much accurate.  The text stream looks like this:

[Snip from /var/log/maillog]
Feb 29 16:52:01 web-2 postfix/smtpd[32047]: 6AD1EBBEF: reject: RCPT
from unknown [12.127.237.226]: 554 <alliednational.com>: Helo command
rejected: Don't spoof my hostname; from=<[EMAIL PROTECTED]>
to=<[EMAIL PROTECTED]> proto=SMTP helo=<alliednational.com>

If I were watching my maillog file stream past, I would want to see
quickly if any messages are getting rejected.  So I flag the word
"reject" in the line above to be red.  So I can easily see why the
message was rejected, I would shade the string "Don't spoof my hostname"
to be ltblue.

To do this, I create a lookup table (@color_array) with all the color
names that maps the correct terminal codes ($color) to turn on and turn
off the colorization.  I have a second array (@trigger_array) that holds
the texts to look for.  The indices between the two map which colors to
prepend the the matching text.  Then I do a substring replace in the
stream, in realtime,looking for "reject" (as found in @trigger_array)
and replace it with "<Make Me Red>reject<Make Me Normal>" and send that
line to the terminal.  This array is created dynamically by the code
snip I started this thread with from a config file when the program
starts.  Once the arrays are created, I never use this code again so
speed isn't criical.

Perl is fast enough that I can only see a split second delay using the
filter.  Syslog takes longer than that to get the text into the file.

I posted the code to the list yesterday, but it hasn't shown up.  I
guess the list doesn't like attachments.  I will re-post it in-line
later.  There are still a few tweaks that people have come up with that
I want to include.

Thanx, all for your help!

-Michael

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to