Perl Script Help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl Script Help
# 15  
Old 02-26-2009
I'm fairly confused now because there are lines with the same session ID but different TP-Processor numbers. Hopefully the OP can give a good definition of what is supposed to be parsed out of the file, otherwise I'm done.
# 16  
Old 02-27-2009
Hi,

Sorry for the confusion made, Those were not diffrent users but the same user.
The session id and the string evelaute time one is in diffrent thread.

Code:
2009-02-18 00:00:11,734 [TP-Processor11] DEBUG RFRiskAssessmentController,(TP-Processor11:122) - Username: 01376128

2009-02-18 00:00:11,765 [TP-Processor11] DEBUG ResponseMessageParser,(TP-Processor11:214) - Error code:0 ErrorMsg:SESSIONID : 1:2857064


2009-02-18 00:00:11,765 [TP-Processor11] INFO  RiskXActionAPI,(TP-Processor11:59) - evaluateRisk: End-to-end time in millisecond 31

Here thread 122 holds the user details, thread 214 holds the session id details and thread 59 contains the string.
In whole the log file the entries for the respective user,sessionid and string will be made in thses threads.

I hope this clarifies the problem correctly.
Thanks for the patience and sorry once again if i made u misinterpret the problem.

Thanks
NT
# 17  
Old 02-27-2009
Quote:
If you can provide me a simple syntax i can proceed further.
Code:
my %hash;
open(my $LOG, 'path/to/file') or die "$!";
LOOP1: while(<DATA>) {
   my $user;
   if (/Next State: risk_assessment$/) {
      LOOP2: while(<DATA>) {
         if (/Username:\s+(\S+)$/) {
            $user = $1;
            if (! exists $hash{$user}) {
               $hash{$user} = {SessionID => '', Time => 0 };
            }
         }
         else {
            next LOOP2;
         } 
         LOOP3: while(<DATA>) {
            if (/ErrorMsg:SESSIONID :\s+(\S+)$/) {
               $hash{$user}{SessionID} = $1;
               next LOOP3;
            }
            elsif (/evaluateRisk: End-to-end time in millisecond (\S+)$/) {
               $hash{$user}{Time} += $1;
               next LOOP1;
            }
         }
      }
   }
}
close ($LOG);
use Data::Dumper;
print Dumper \%hash;

I leave coding formatted output up to you. ALso, since the amount of sample data was limited, I would not be surprised if this does not work for the entire file.

Last edited by KevinADC; 02-27-2009 at 03:18 AM..
# 18  
Old 02-27-2009
If the same user can have different session IDs that need to be tracked seperately then the data structure has to be changed
# 19  
Old 02-27-2009
Hi Kevin,

Thanks For the script part, but i can not understand much part of it syntax wise, can you please explain me too what you have done.

Thanks
NT
# 20  
Old 02-27-2009
Some loops, some regular expressions, and a hash of hashes for the data.
# 21  
Old 03-04-2009
Hi Kevin/Tom/All,

I put your script in a function and it is working perfectly fine. I created another similar function that is also evaluating the time only.

Here for me the catch is that the userid is not coming directly but coming inbetween a big xml string, i want to extract that userid, i did some regular expression matches but failed. Can you help me in this.

Code:
The username is coming from here ---   Username: 01172275
if (/Username:\s+(\S+)$/) {
            $user = $1;

The username is coming from this string--
Code:
updateAttributes: XML Request [<POLICYREQ><MESSAGEID>1</MESSAGEID><CALLERID>4 - MLS - MLS: com.arcot.aok.web.controllers.rf.RFSyncClientDIDController|1:2594742</CALLERID><SESSIONID>1:2594742</SESSIONID><AUTHRESULT>UNSPECIFIED</AUTHRESULT><IDENTITY><USERID>01172275</USERID><GROUP>MLS</GROUP><SUBGROUP>SUBGROUP2</SUBGROUP></IDENTITY><LOCATION><IPADDRESS>208.36.8.182</IPADDRESS></LOCATION><DEVICEID </DEVICESIG></POLICYREQ>]

I want to do a similar check as before.
Can you help me out guys please.

What is did is--
Code:
#$str=~/(?:.*<USERID>)(.*)(?:<\/USERID>.*$)/;
			#print $str;

Thanks
NT

Last edited by namishtiwari; 03-04-2009 at 10:38 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

PERL: In a perl-scripttTrying to execute another perl-script that SETS SOME VARIABLES !

I have reviewed many examples on-line about running another process (either PERL or shell command or a program), but do not find any usefull for my needs way. (Reviewed and not useful the system(), 'back ticks', exec() and open()) I would like to run another PERL-script from first one, not... (1 Reply)
Discussion started by: alex_5161
1 Replies

2. Shell Programming and Scripting

Excuting perl script from within a perl script with variables.

Not sure what I am doing wrong here, but I can print the list with no issue. Just a blank screen with the 'do'. #!/usr/bin/perl open FILE, "upslist.txt"; while ($line=<FILE>){ if ($line=~/^(.*?),(.*?)$/){ #print "ups:$1 string:$2\n"; do 'check_snmp_mgeups-0.1.pl -H $1 -C $2'; } ... (1 Reply)
Discussion started by: mrlayance
1 Replies

3. Shell Programming and Scripting

Perl : embedding java script with cgi perl script

Hi All, I am aware that html tags can be embedded in cgi script as below.. In the same way is it possible to embed the below javascript in perl cgi script ?? print("<form action="action.htm" method="post" onSubmit="return submitForm(this.Submitbutton)">"); print("<input type = "text"... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

executing perl script from another perl script : NOT WORKING

Hi Folks, I have 2 perl scripts and I need to execute 2nd perl script from the 1st perl script in WINDOWS. In the 1st perl script that I had, I am calling the 2nd script main.pl =========== print "This is my main script\n"; `perl C:\\Users\\sripathg\\Desktop\\scripts\\hi.pl`; ... (3 Replies)
Discussion started by: giridhar276
3 Replies

5. Shell Programming and Scripting

calling a perl script with arguments from a parent perl script

I am trying to run a perl script which needs input arguments from a parent perl script, but doesn't seem to work. Appreciate your help in this regard. From parent.pl $input1=123; $input2=abc; I tried calling it with system("/usr/bin/perl child.pl $input1 $input2"); and `perl... (1 Reply)
Discussion started by: grajp002
1 Replies

6. Shell Programming and Scripting

HELP on Perl array / sorting - trying to convert Korn Shell Script to Perl

Hi all, Not sure if this should be in the programming forum, but I believe it will get more response under the Shell Programming and Scripting FORUM. Am trying to write a customized df script in Perl and need some help with regards to using arrays and file handlers. At the moment am... (3 Replies)
Discussion started by: newbie_01
3 Replies

7. Shell Programming and Scripting

Perl :How to print the o/p of a Perl script on console and redirecting same in log file @ same time.

How can i print the output of a perl script on a unix console and redirect the same in a log file under same directory simultaneously ? Like in Shell script, we use tee, is there anything in Perl or any other option ? (2 Replies)
Discussion started by: butterfly20
2 Replies

8. Shell Programming and Scripting

perl/unix: script in command line works but not in perl

so in unix this command works works and shows me a list of directories find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt but when i try running a perl script to run this command my $query = 'find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt';... (2 Replies)
Discussion started by: kpddong
2 Replies

9. Shell Programming and Scripting

[Perl] Accessing array elements within a sed command in Perl script

I am trying to use a script to replace the header of each file, whose filename are stored within the array $test, using the sed command within a Perl script as follows: $count = 0; while ( $count < $#test ) { `sed -e 's/BIOGRF 321/BIOGRF 332/g' ${test} > 0`; `cat 0 >... (2 Replies)
Discussion started by: userix
2 Replies

10. Shell Programming and Scripting

Perl: Run perl script in the current process

I have a question regarding running perl in the current process. I shall demonstrate with an example. Look at this. sh-2.05b$ pwd /tmp sh-2.05b$ cat test.sh #! /bin/sh cd /etc sh-2.05b$ ./test.sh sh-2.05b$ pwd /tmp sh-2.05b$ . ./test.sh sh-2.05b$ pwd /etc sh-2.05b$ So... (10 Replies)
Discussion started by: vino
10 Replies
Login or Register to Ask a Question