problem in perl script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting problem in perl script
# 1  
Old 06-22-2009
problem in perl script

Hi,

Here is my piece of code.

Code:
#!/usr/bin/perl

my $logFile = $ARGV[0];

die "usage: $0 <logFile>" unless $logFile;
die "Logfile $logFile doesn't exist" unless -f "$logFile";

my %no_of_questions;
my %timestamp;
open (FP,"<$logFile") or die "unable to open file $!" ;
@records=<FP>;
chomp(@records);

for($index=0;$index<@records;$index++)
	{
		if($records[$index] =~ /^(.*)INFO:.*Entering QnAModule::authenticate/)
		{
			#printf "in INFO:.*Entering QnAModule::authenticate\n";
			$Time_Stamp = $1;
			#die "Some error in search_for_username_and_no_of_questions" if (search_for_username_and_no_of_questions() == -1);
			#die "Some error in end_block" if (end_block() == -1);
			search_for_username_and_no_of_questions();
			end_block();

		}
		#last;
	}		
			
			


sub search_for_username_and_no_of_questions
{
printf "inside search_for_username_and_no_of_questions\n";
			for($index=0;$index<@records;$index++)
			{
				if ($records[$index] =~ /userName :\[(..*)\]/) 
				{
					#printf "in user name identification \n";
					$User_Name = $1;
					$User_Name =~ s/\s+//g;
					for(;$index<@records;$index++)
					{
						if ($records[$index] =~ /Set of questions\(bitmap\) selected : (\d+)/) 
						{
							#printf "in set of questions\n";
							$Bitmap_Number_For_Questions = $1;
							$no_of_questions{$User_Name}=$Bitmap_Number_For_Questions;
							$timestamp{$User_Name}=$Time_Stamp;
							#printf "DETAIL: LINE NO: $index\n";
							#printf "$Time_Stamp,$User_Name,$Bitmap_Number_For_Questions\n";
							return 0;
						}
					}
				
					
			}
		last;
    }
}

sub end_block
{
printf "Inside end_block\n";
	for($index=0;$index<@records;$index++)
	{
		
		if($records[$index] =~ /QNA Step.*AUTH IN PROGRESS/)
		{
			printf "DETAIL: auth in progress\n";
			for(;$index<@records;$index++)
			{
				if ($records[$index] =~ /ArAuthFrameworkImpl::doPostAuth.*Authentication mechanism returned \[(..*)\] for AuthIdentity \[(..*)\]/)
				{
					#printf "done one request \n";
					#printf "$records[$index]\n";
					my $return_code = $1;
					my $temp_user = $2;
					$temp_user =~ s/\s+//g;
					#printf "user = $temp_user\n";
					if(exists($no_of_questions{$temp_user}))
					{
						if ($return_code == 0) 
						{
							printf "$temp_user,$no_of_questions{$temp_user} , $timestamp{$temp_user} , \"Success\" \n";
							return 0;
						}
						elsif ($return_code > 1)
						{
							printf "$temp_user,$no_of_questions{$temp_user} , $timestamp{$temp_user} , \"Failure\" \n";
							return 0;
						}
						for(;$index<@records;$index++)
						{
							if ( ($records[$index] =~ /Prepared to Send OK/) || ($records[$index] =~ /Sending Invalid credential/) )
							{
								#printf "end of file\n";
							}
						}
					}				
				}
				last;
			}
		}
	}
	#return -1;
}

here is the sample data-
Code:
monday 12:55:66 INFO:Entering QnAModule::authenticate
monday 12:55:66 userName :[prasanna]
monday 12:55:66 Set of questions(bitmap) selected : 13
monday 12:55:66 QNA Step.*AUTH IN PROGRESS
monday 12:55:66 ArAuthFrameworkImpl::doPostAuth.*Authentication mechanism returned [4] for AuthIdentity [prasanna]
monday 12:55:66 Prepared to Send OK 
monday 12:55:66 Sending Invalid credential
monday 12:55:66 INFO:Entering QnAModule::authenticate
monday 12:55:66 userName :[prasanna]
monday 12:55:66 Set of questions(bitmap) selected : 13
monday 12:55:66 QNA Step.*AUTH IN PROGRESS
monday 12:55:66 ArAuthFrameworkImpl::doPostAuth.*Authentication mechanism returned [4] for AuthIdentity [prasanna]
monday 12:55:66 Prepared to Send OK 
monday 12:55:66 Sending Invalid credential

when i ran the script on this data i got the actual result ie
Quote:
inside search_for_username_and_no_of_questions
Inside end_block
DETAIL: auth in progress
DETAIL: auth in progress
it did not print any data. Kindly give some suggestions.
Thanks
NT[quote]
# 2  
Old 06-22-2009
What is the output you were expecting?

A good first step is to add "use strict;" and "use warnings;".
# 3  
Old 06-22-2009
You may want to invoke your script with the "-d" option which will start the debugger, and just step through the code. That way you will know where exactly you should've printed the data from the file.

tyler_durden
# 4  
Old 06-23-2009
Quote:
Originally Posted by absurddoctor
What is the output you were expecting?

A good first step is to add "use strict;" and "use warnings;".
when i used
Code:
use strict;
use warnings;

in my code i got so many warning message like this --
Code:
Global symbol "$index" requires explicit package name at per_user_qna_detail.pl
line 67.

This error came for all the global symbol.
How i can get rid of this.

The expeted output is the print statement in my script.

Thanks
NT
# 5  
Old 06-24-2009
Quote:
Originally Posted by namishtiwari
Global symbol "$index" requires explicit package name at per_user_qna_detail.pl
line 67.[/code]This error came for all the global symbol.
How i can get rid of this.
The variable in question wasn't 'declared' with 'my'.

Quote:
The expeted output is the print statement in my script.
It seems likely that one of those conditionals never turns out to be true. One way to track this down is with the debugger, as mentioned above.

Another method is to print statement at the beginning of each block along the lines "I am now in if block 2". When you see which block you don't end up in, you can then add a new print statement just above, printing out the values that the conditional depends on, and from there work out why they are not what you expect. From the commented out print statements, it looks like you started doing something along those lines already.

A minor nitpick ... it doesn't look like you use any formatting lines with all of those printf()'s, you could use plain old 'print' instead.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Problem with my perl script

hiii alll i wrote a prgm which would take position and strand from file 1 and tries to locate a string 250 characters ahead/before that position in anothe file (based on strand 0 or 1) open my $fhConditions, "<", "1.txt" or die "Epic Fail: $!"; open my $fhCharacters, "<", "2.txt" or die "OMG... (1 Reply)
Discussion started by: anurupa777
1 Replies

2. Web Development

problem with exporting vairable from one perl cgi to another perl cgi script while redirecting.

Can anyone tell me how to export a variable from one perl CGI script to another perl cgi script when using a redirect. Upon running the login.pl the user is prompted to enter user name and password. Upon entering the correct credentials (admin/admin) the user is redirected to welcome page. My... (3 Replies)
Discussion started by: Arun_Linux
3 Replies

3. Programming

Perl script problem

I made a perl script that will number the lines of program scripts with an extension asked by the user and will save them into a .txt file My problem with the code is that for some reason it skips about every second line Im currently using ms win7 with strawberry perl heres the code so far... (0 Replies)
Discussion started by: ejok
0 Replies

4. AIX

Perl Script Problem

Hi! I'm having a problem on AIX 5.3 I cant' seem to sort out. A Perl script that was working has stopped for some reason. Possibly and update or something seems to have broken it. The error is below and any help would be appreciated! Can't load... (2 Replies)
Discussion started by: eth0
2 Replies

5. Shell Programming and Scripting

Perl Script Problem

Hi Perl Gurus, I have a very simple problem. This command perfectly runs in Unix Shell: dlv_mng@hpp309:/delivery/dlv/dlv/dlv_mng> echo 7.5.1.2.25 | sed -n 's^\(.\).\(.\).\(.*\).\(.*\).\(.*\)^\1.\2^p' 7.5 However, when I run this inside a perl script, it fails. ... (1 Reply)
Discussion started by: som.nitk
1 Replies

6. HP-UX

perl script problem.

I test this perl script on hpux 11.x and everything is OK, on hpux 10.20 it doesn't work perl -e 'local($PSTAT,$PSTAT_STATIC,$mem_info,$PSTAT_STRUCT)=(239,2,"\0"x120,"LI4L"); syscall($PSTAT,$PSTAT_STATIC,$mem_info,length($mem_info),1,0); print... (1 Reply)
Discussion started by: netfinity
1 Replies

7. Shell Programming and Scripting

Problem in a perl script

Hi All I have to modify a existing perl script The context of the input txt file has changed Basically I have to remove 4 lines from the top of the file and print a number Of fields into another file and feed the out put back into the script. Now I’m doing this part manually ... (1 Reply)
Discussion started by: Ex-Capsa
1 Replies

8. Shell Programming and Scripting

call shell script from perl cgi script problem

hi,, i have perl scipt with line : system('./try.sh $t $d $m'); in shell scipt try.sh i have the line: echo $1 its not printing value of $t that i hav passed..y is it so..i am running it from apache web server (2 Replies)
Discussion started by: raksha.s
2 Replies

9. Shell Programming and Scripting

PERL script problem

Hi all, i wrote this script and the code appears to work except i cannot connect to the WMI interface on Windows XP boxes. The listing is printed for testing purposes so i know that part works. When it tries to connect to WMI, the script dies. Should echo these properties to me. I think the... (5 Replies)
Discussion started by: caddyjoe77
5 Replies

10. Shell Programming and Scripting

Perl script strange problem

Hi All, I have one strange problem in perl script. Bellow is the contents of the script i am trying to write: #!/usr/local/bin/perl my $module_list = ''; my @running_module; my $count=0; my $flag=0; my $ccprojecthome=$ENV{CCPROJECTHOME}; @module_list = `cat... (2 Replies)
Discussion started by: vaibhav
2 Replies
Login or Register to Ask a Question