Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^3: printing several lines around match

by muba (Priest)
on Jun 19, 2012 at 13:41 UTC ( #977073=note: print w/ replies, xml ) Need Help??


in reply to Re^2: printing several lines around match
in thread printing several lines around match

Untested, but I think it should get you on the right track.

#!/usr/bin/perl -w use strict; use warnings; my $m_1 = "Receive message"; @ARGV == 2 || die "usage: $0 TAB_1 TAB_5\n"; my ( $TAB_11, $TAB_35 ) = @ARGV; my @files = <./*.log>; # Fixed inconsistent indentation. foreach my $file (@files) { print $file . "\n"; my @last_few_lines; my $how_many_lines = 3; my $matched = 0; open (my $HAN, $file) || die "Cannot open '$log' because: $!"; while ( (not $matched) && <$HAN> ) { # As per roboticus, slightly altered though: push @last_few_lines, $_; shift @last_few_lines if @last_few_lines > $how_many_lines; if ( m/$TAB_11|$TAB_35/ && m/$m_1/) { print @last_few_lines, $&; # Note that $& will contain the matched results from the # m/$m_1/ match, in your and my designs both. $matched = 1; } if ($matched) { $matched = 0; for (1..$how_many_lines) { print <$HAN>; last if eof $HAN; } } } }


Comment on Re^3: printing several lines around match
Download Code
Re^4: printing several lines around match
by auto_w (Novice) on Jun 19, 2012 at 15:05 UTC
    Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 109. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 110. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 111. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 112. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 113. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 114. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 115. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 116. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 117. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 118. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 119. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 120. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 121. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 122. Use of uninitialized value $_ in pattern match (m//) at ./perl4line.pl line 25, <$HAN> line 123.

      Ain't that one sweet helluva mess.

      Change the while line into this. I think it should solve it. But again, untested.

      while ( <$HAN> ) {

      But more importantly, instead of verbatim copying that code, try to understand what's going on. Try to understand what I am doing, and why, and how. Of course, my way is not the only way and for all I know it might not even be the best way, but it's the thought process that matters.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (3)
As of 2015-07-05 07:51 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 (60 votes), past polls