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 taking refuge in the Monastery: (5)
As of 2014-12-25 16:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (160 votes), past polls