Craig, this seems to work okay. I made a few amendments but only to add warnings and use strict. Its easier to debug typos, bad initializations etc. with warning and strict set.
Give this ago #!/usr/bin/perl -w use strict; open (LISTFILE, "wuglist.txt") || die "$!\n"; open (OUTLOGFILE, ">newlog.log") || die "$!\n"; my @list = <LISTFILE>; foreach my $server_name (@list) { chomp ($server_name); print "Processing $server_name\n"; open (INLOGFILE, "WUGEvent.log") || die "$!\n"; my @lines = <INLOGFILE>; foreach (@lines){ chomp; if (/\bUP\b/ && /\b$server_name\b/) { s/\t+/|/g; s/missed //g; print "$_\n"; } close INLOGFILE; } } close LISTFILE; close OUTLOGFILE; WUGEvent.log ------------------------------- fdbd bvbvfn Up UP fdjnb UP server1 UP server2 UP vfnvdfk dbnokbn UP server1 vnddb wuglist.txt ----------------------------- server1 server2 server3 Results ----------------------------- Processing server1 UP server1 dbnokbn UP server1 Processing server2 UP server2 Processing server3 It may be that your log file does not contain that pattern you are looking for. Have you tried a hex dump of the file? Steve -----Original Message----- From: Craig Sharp [mailto:[EMAIL PROTECTED]] Sent: Monday, November 26, 2001 2:50 PM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: RE: [Perl-unix-users] Script Help Please Steve, I made the correction as follows: if (/\bUP\b/ && /$server_name/) Does not work. I also tried: if (/$server_name/) Does not work. And: if (/\b$server_name\b/) Does not work. I have checked that the variable $server_name is defined but it seems like the compare is not working. Here is the modified script. I still think that there is a loop and or logic problem. #!/usr/bin/perl open (listfile, "wuglist.txt") || die "$!\n"; open (outlogfile, ">newlog.log") || die "$!\n"; @lines = <inlogfile>; @list = <listfile>; foreach $server_name (@list) { chomp ($server_name); print "Processing $server_name\n"; open (inlogfile, "WUGEvent.log") || die "$!\n"; @lines = <inlogfile>; foreach (@lines){ chomp; if (/\bUP\b/ && /\b$server_name\b/) { s/\t+/|/g; s/missed //g; print "$_\n"; } close inlogfile; } } close listfile; close outlogfile; Thanks, Craig >>> Steve Aaron <[EMAIL PROTECTED]> 11/26/01 07:55AM >>> Try if (/\bUP\b/ && /$server_name/) You are not matching on $server_name as $server_name is not enclosed by the match operator. You could easily put this in a single regular expression if the position of $server_name is predictable. e.g. It alway falls after UP. If you cannot predict where the server name falls then it will be more efficient to put the text that occurs least frequently on the left of the && as the right-hand side is only evaluated if the left-hand expression returns true. Steve Aaron -----Original Message----- From: Craig Sharp [mailto:[EMAIL PROTECTED]] Sent: Monday, November 26, 2001 12:45 PM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: [Perl-unix-users] Script Help Please Hi all, I am lost. I have the following script that opens the log file WUGEvent.log and looks for the statment "UP", replaces spaces and writes out the new log file. It works great! Here is the problem. I need to read in another file (wuglist.txt) containing a list of server names and then compare each name to the line currently being processed. Then if it matches, write the line out to a new file following the conversion. I tried to read the server name from the file into a variable and add a && to the reg expression looking for UP but it did not work: if (/\bUP\b/ && $server_name) I am lost in how to setup the loop and compare. Thanks, Here is the script and sample log files: #!/usr/bin/perl #--------------------------------------------------------------------------- ----------- # log_convert.pl script #--------------------------------------------------------------------------- ----------- open (inlogfile, "WUGEvent.log") || die "$!\n"; open (outlogfile, ">newlog.log") || die "$!\n"; @lines = <inlogfile>; select outlogfile; foreach (@lines) { chomp; if (/\bUP\b/) { s/\t+/|/g; s/missed //g; print "$_\n"; } } close inlogfile; close outlogfile; —--------------------------------------------------------------------------- --------- Sample WUGEvent.log 20011022 143423 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Derrick (pager) 20011022 143430 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Craig's e-mail 20011022 143430 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Craig's pager 20011022 143430 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Dave's pager 20011022 143431 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Help Desk 20011022 143514 C:\Program Files\WhatsUp\b31.wup UP roush_31 10.31.1.1 missed 4 20011022 143515 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Beryl (e-mail) 20011022 143515 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Bethany (e-mail) 20011022 143516 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Dale (e-mail) 20011022 143516 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Derrick (e-mail) 20011022 143516 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Help Desk 20011022 143517 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Dave's pager 20011022 143517 C:\Program Files\WhatsUp\b31.wup Alert successful process N:roush_31 F:768 A:SMTPMail/Derrick (pager) 20011022 143524 C:\Program Files\WhatsUp\B07.wup UP roushftp1 208.44.92.201 missed 4 20011022 143525 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Craig's e-mail 20011022 143525 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Craig's pager 20011022 143526 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Dave's pager 20011022 143526 C:\Program Files\WhatsUp\B07.wup Alert successful process N:roushftp1 F:768 A:SMTPMail/Help Desk 20011022 144058 C:\Program Files\WhatsUp\B09.wup DOWN roush_ap 199.179.57.7 Host Unreachable —--------------------------------------------------------------------------- ---- Sample newlog.log 20010930 042501 C:\Program Files\WhatsUp\B07_NT.wup UP liv7-app1 200.1.1.18 2 20010930 042501 C:\Program Files\WhatsUp\B07_NT.wup UP liv7-app5 200.1.1.15 2 20010930 042501 C:\Program Files\WhatsUp\B07_NT.wup UP liv7-app2 200.1.1.12 2 20010930 042701 C:\Program Files\WhatsUp\B07_NT.wup UP liv-acct 200.1.1.11 3 20010930 182519 C:\Program Files\WhatsUp\b41.wup UP fsnsusan 10.41.1.1 1 20010930 182519 C:\Program Files\WhatsUp\b41.wup UP rsg01 10.41.1.10 1 20010930 182519 C:\Program Files\WhatsUp\b41.wup UP chaplin1 10.41.1.12 1 20010930 182519 C:\Program Files\WhatsUp\b41.wup UP ECOMMERC 10.41.1.11 1 —--------------------------------------------------------------------------- -- Sample wuglist.txt machine_6 roush_app2 roush_liv7 roush_acct roush_mail3 roush_domain msnharry roush_dhcp1 fs05431 roush_ap fsnkelly fsntammy fsnralph roush_31 fsnjacob Craig A. Sharp Unix Systems Administrator DNS Administrator Roush Industries Office: 734-779-7282 Cell: 734-231-6769 Fax: 734-779-7807 [EMAIL PROTECTED] ==================================================== I have not lost my mind, it's backed up on tape somewhere! ==================================================== _______________________________________________ Perl-Unix-Users mailing list. To unsubscribe go to http://listserv.ActiveState.com/mailman/subscribe/perl-unix-users