if ($out =~/$last(.*)$/s
####
//m
//s
//ms
####
1 #!/usr/bin/env perl
2
3 my $fileA = 'fileA.txt'; # the file to store incremental greps on fileB
4 my $fileB = 'fileB.txt'; # the live file which is log-rotated every 10MB
5 my $pattern = 'xxxx';
6
7 #--------------------------------
8 sub main {
9 $out = qx/grep -A 1 -B 1 $pattern $fileB/;
10 $out && writeA (\$out);
11 }
12 #--------------------------------
13 sub write_file {
14 my ($file_name, $content_ref, $write_mod_append) = @_;
15 my $write_mod = $write_mod_append ? '>>' : '>';
16 open(my $fh, $write_mod, $file_name) or die "Could not open file '$file_name' $!";
17 print $fh $$content_ref;
18 close $fh;
19 }
20 #--------------------------------
21 sub writeA {
22 my ($out_ref) = @_;
23 my $write_mod_append;
24 if ( -e $fileA ) {
25 $write_mod_append = 1;
26 my $last_line = qx/tail -1 $fileA/;
27 chomp $last_line;
28
29 if ($$out_ref =~/$last_line(.*)$/s) {
30 $$out_ref = $1
31 }
32 }
33 write_file ($fileA, $out_ref, $write_mod_append) if ($$out_ref =~ /\S/);
34 }
35 #--------------------------------
36 main;
####
--------------...------------
--------------...------------
--------------aaa------------
-------------xxxx------------
--------------bbb------------
--------------...------------
--------------...------------
--------------ccc------------
-------------xxxx------------
--------------ddd------------
--------------...------------
####
--------------aaa------------
-------------xxxx------------
--------------bbb------------
--
--
--------------ccc------------
-------------xxxx------------
--------------ddd------------
####
--------------...------------
--------------...------------
--------------aaa------------
-------------xxxx------------
--------------bbb------------
--------------...------------
--------------...------------
--------------ccc------------
-------------xxxx------------
--------------ddd------------
--------------...------------
--------------...------------
--------------eee------------
-------------xxxx------------
--------------fff------------
--------------...------------
####
--------------aaa------------
-------------xxxx------------
--------------bbb------------
--
--
--------------ccc------------
-------------xxxx------------
--------------ddd------------
--
--
--------------eee------------
-------------xxxx------------
--------------fff------------