Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: Match 2 strings in same line

by kennethk (Abbot)
on Nov 25, 2013 at 17:07 UTC ( #1064251=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Match 2 strings in same line
in thread Match 2 strings in same line

What's in $logsIncDate? The most obvious case is that your string contains Metacharacters, and so they need to be escaped:

if($line =~ m/\Q$logsIncDate\E/ and $line =~ m/SW_MATM-4-MACFLAP_NOTIF +/){ push(@eigrp, "$line\n"); }

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.


Comment on Re^3: Match 2 strings in same line
Select or Download Code
Re^4: Match 2 strings in same line
by hmb104 (Sexton) on Nov 25, 2013 at 17:21 UTC
    my $logsIncDate = `date +"%b %d %H"`; my @eigrp = (); open SwitchLogs, $logFile or die "Could not open $logFile: $!"; while (<SwitchLogs>) { chomp; my $line = $_; if($line =~ m/$logsIncDate/ && $line =~ m/SW_MATM-4-MACFLAP_NOTIF/ +){ push(@eigrp, "$line\n"); $sendemail = 1; } }

    All I want to do is to match the date/time in a line that contain the specified string. So the above code should catch the below one line:

    Nov 25 10:59:13 10.1.162.11/10.1.162.11 1410: Nov 25 16:59:12.724: %SW +_MATM-4-MACFLAP_NOTIF: Host 30ff.0c00.d4be in vlan 162 is flapping be +tween port Fa0/13 and port Fa0/10
      The result of `date +"%b %d %H"` has a trailing newline, which is not present in your string. You need to remove that, perhaps with chomp:
      chomp(my $logsIncDate = `date +"%b %d %H"`);

      Also, why are you chomping your input, only to re-append a newline on storage? Seems like you could avoid unnecessary operations (and more opportunities for confusion and bugs) with

      while (my $line = <SwitchLogs>) { if($line =~ m/$logsIncDate/ && $line =~ m/SW_MATM-4-MACFLAP_NOTIF/ +){ push(@eigrp, $line); $sendemail = 1; } }

      #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

        Thanks much. I was just missing the newline after my date formatting. Good catch.

      Hint: the last character of $logsIncDate is a newline. Maybe you should consider using POSIX::strftime instead


      Enjoy, Have FUN! H.Merijn

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1064251]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (15)
As of 2015-07-02 13:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (41 votes), past polls