Denham Eva wrote:
> Please could the wise folks give me some help. Something is wrong and
> I can not find out what.
>
> When I run this program it returns everything is OK (Suspect a logic
> error somewhere), which is not possible as the logs in question do
> have data that I require (i.e. ORA-12571: TNS:packet writer failure).
>
> This script is to check the Oracle Logs for errors beginning with
> "ORA-" i.e. ORA-013100
>
> Then it should return only the errors. You will see I try to reverse
> the file as I only want the newest errors first, anyway I want to
> build that functionality into it eventually that I can set a
> limit...but that is for later.
>
> Here is my script.
>
[snip]
>
> # open the LogFile
>
> open SITELOG, "$loc" ||die "Can not open $loc: $!";
>
> # I suspect that my mistake may be around here :-)
You haven't read a row from SITELOG. So the regex below is checking the row
from your SITES file.
>
> # Check the file for any ORA- entries
>
> if($_ =~ m/ORA-/) {
>
> # If it contains records, reverse the file
>
> my @lines = reverse($_);
The call to reverse() is doing nothing here. You're just assigning the
scalar $_ to the array @lines, which will have one element following the
assignment.
Are you just trying to report the ORA-XXX errors in reverse order? If so,
something like this should work:
my @errs;
while (<SITELOG>) {
push @errs, $_ if /ORA-/;
}
print reverse @errs;
HTH
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>