|
wrong output in perl script
Hi,
Here is my piece of code--
Code:
#!/usr/bin/perl
my $Time_Stamp ;
my $User_Name;
my $Success;
my $Failure;
my $ErrorCode;
my $ErrorMsg;
my $logDir = $ARGV[0];
my $logPrefix = $ARGV[1];
die "usage: $0 <logDir> <logPrefix>" unless $logDir and $logPrefix;
die "Log dir $logDir doesn't exist" unless -d "$logDir";
for my $logFile ( glob("$logDir/${logPrefix}*") )
{
open($log, "<", $logFile) or die "Can't open $logFile for reading.";
open(FP_OUT,">temp12") or die "cannot create file temp1 for writing";
print "Processing file $logFile...\n";
OUTER: while( $line = <$log> )
{
chomp($line);
if ($line =~ /^(.*)INFO:.*QNA Step - AUTH IN PROGRESS/)
{
$Time_Stamp = $1;
printf FP_OUT "$Time_Stamp,";
QnA_search_for_sucess_or_failure() ;
#QnA_search_for_userID() ;
next OUTER;
}
}
}
sub QnA_search_for_sucess_or_failure
{
OUTER1: while ( $line = <$log> )
{
if ($line =~ /QNA Auth.*Success\s*and\s*Complete/)
{
printf FP_OUT "Success,";
print STDOUT "In Success,\n";
$ErrorMsg="null";
while ( $line = <$log> )
{
if ($line =~ /ArAuthFrameworkImpl::doPostAuth.*Authentication\s*mechanism\s*returned\s*\[(..*)\]\s*for\s*AuthIdentity\s*\[(..*)\]/)
{
print "$2\n";
printf FP_OUT "$2, ${1}, $ErrorMsg\n";
last OUTER1;
}
}
}
if($line =~ /Message.*QNA\s*Auth\s*Failed\((..*)\).*/)
{
$ErrorMsg=$1;
printf FP_OUT "Failure,";
print STDOUT "In Failure,\n";
while ( $line = <$log> )
{
if ($line =~ /ArAuthFrameworkImpl::doPostAuth.*Authentication\s*mechanism\s*returned\s*\[(..*)\]\s*for\s*AuthIdentity\s*\[(..*)\]/)
{
print "$2\n";
printf FP_OUT "$2, ${1}, $ErrorMsg\n";
last OUTER1;
}
}
}
}
}
The below snippet is taken from the logfile.I am using while loops because there are many lines above and inbetween this snippet.
Code:
Tue May 19 22:55:13.649 2009 Morocco Standard Time INFO: pid 2172 tid 3412: 160: 10083504: QNA Step - AUTH IN PROGRESS
Tue May 19 22:55:13.649 2009 Morocco Standard Time INFO: pid 2172 tid 3412: 160: 10083504: QNA Auth - Success and Complete, Returning SUCCESS
Tue May 19 22:55:13.665 2009 Morocco Standard Time INFO: pid 2172 tid 3412: 17: 10083504: ArAuthFrameworkImpl::doPostAuth::1:10083487:: Authentication mechanism returned [0] for AuthIdentity [12345]
and for QnA failure the line comes like this in place of success line--
Tue May 19 22:56:21.962 2009 Morocco Standard Time INFO: pid 2172 tid 688: 160: 10083554: Err[115261735], Message: QNA Auth Failed(Invalid Credentials), Repeating the challenge and Returning FAILED
when i ran the program like this--
Code:
C:\Perl Script>perl QnA_Authentication.pl . logfile.txt
Processing file ./logfile.txt...
In Success,
01503164
In Success,
01822755
In Failure,
01401058
Processing file ./logfile.txt.bak...
but in output file that is temp12, it is not printing anything.
Kindly suggest wha is wrong here.
|