perl -ne 'if ( $flag ) { $flag++; $flag %= 3; } if ( m/error/ ) { $flag = 1; } print $., q{: }, $_ if ( $flag );' #### $ perl -ne 'if ( $flag ) { $flag++; $flag %= 3; } if (m/\$line/) { $flag = 1; }; print $., q{: }, $_ if ( $flag );' test.pl 15: while ( my $line = <$df> ) { 16: chomp $line; 17: next if ( $line =~ m/^\s*$/ ); 18: 19: if ( substr( $line, 3, 8 ) eq q{ACCOUNTA} ) { 20: print $/, $line, qq{\n}; 21: }