im posting the code to give a clear idea...
#!/usr/bin/perl
#
use strict;
#use warnings;
use List::Util q{first};
sub search_phrase{
my @array;
my ( $inFile, @phrases ) = @_;
my $lastPhrase = $phrases[ -1 ];
open my $inFH, q{<}, $inFile
or die qq{open: $inFile: $!\n};
my @lines = <$inFH>;
close $inFH or die qq{close: $!\n};
foreach my $phrase ( @phrases )
{
my $rxPhrase = qr{\Q$phrase\E};
my $lineNo =
first { $lines[ $_ ] =~ $rxPhrase } 0 .. $#lines;
unless ( defined $lineNo )
{
next;
}
print ""
if ($lines[ $lineNo ] =~ m{\Q$lastPhrase\E\s*(\d*)});
push (@array,$1);
$lineNo ++;
splice @lines, 0, $lineNo;
}
return (@array);
}
my $file_n = "test.txt";
my $phrase1 = "total rows rejected:";
my $phrase2 = "total rejected recors:";
my $phrase3 = "rows rejected for sub";
my $phrase4 = "total rejected rows:";
my @newarray=search_phrase($file_n, $phrase1, $phrase2, $phrase3, $phr
+ase4);
my $count=($#newarray);
$newarray[$count]=~ s/\s+//g;
if ((($#newarray+1)>=1) && ($newarray[$count]gt 0)) {
print "$newarray[$count]\n";
}
else
{
print "-1\n";
}
the log file is searched in the sequence the phrases are given and the last phrase's value is returned. if the last phrase is not present in the log file or not in that sequence it returns -1. my problem is, if u look at the log file "rows rejected for sub" if this is given as the last phrase, (the number is present at the beginning of the search phrase) the number present at the beginning must be returned. this program works only if the last phrase (search phrase) has the number after that not at the beginning. and once again, the sequence or the phrases given for search varies everytime according to the log file.
log file
This file is to check the number of occurences of the word reject
total rows rejected: 80
this file just contains the phrase reject.
reject:3
reject 3
reject 4
total rejected rows: 100
total rejected rows: 90
total rejected rows: 60
total rejected rows:40
total rejected rows:40
90 rows rejected for sub
999 rows rejected for sub
100 rows rejected for sub
Reject_Ao
total rejected recors: 60
total rejected rows:49
reject:1
390 rows rejected for sub
thanks. |