perlquestion
Anonymous Monk
Hello Monks ,
I have the following input file which I try to capture data from :
<code>
end
sleep 10
dis qremote(MQSI.3PL846)RNAMERQMNAME1 : dis qremote(MQSI.3PL846) RNAME RQMNAME
AMQ8409: Display Queue details.QUEUE(MQSI.3PL846)TYPE(QREMOTE)RQMNAME(MSTBKRQ1)RNAME(MQSI.3PL846)
end2 : end
Starting MQSC for queue manager NTTCSWQ1.
AMQ8409: Display Queue details.QUEUE(MQSI.3PL944)TYPE(QREMOTE)RQMNAME(MSTBKRQ1)RNAME(MQSI.3PL944)
exit
5724-H72 (C) Copyright IBM Corp. 1994, 2004. ALL RIGHTS RESERVED.
1 : dis qremote(MQSI.ADM850) RNAME RQMNAME
AMQ8409: Display Queue details.
QUEUE(MQSI.ADM850) TYPE(QREMOTE)
RQMNAME(MSTBKRQ1) RNAME(MQSI.ADM850)
2 : end
end
sleep 10
exit
AMQ8409: Display Queue details.
QUEUE(MQSI.ADMAPTR) TYPE(QREMOTE)
RQMNAME(MSTBKRQ1) RNAME(MQSI.ADMAPTR)
2 : end
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.
</code>
what I am trying to capture is the QUEUE , RNAME and RQNAME values everytime I see the code AMQ8409, but as you can see the values which I am looking for can be on one line or somtimes written in 2 lines, so I did the following :
<code>
foreach my $line (<INPUT>) {
my $match_queue = qr{ QUEUE # literal word 'QUEUE'
\( # literal open paren
(.*?) # non-greedy capture of >=0
\) # literal close paren
}xms;
my $match_rname = qr{ RNAME # literal word 'RNAME'
\( # literal open paren
(.*?) # non-greedy capture of >=0
\) # literal close paren
}xms;
my $match_qmname = qr{ RQMNAME # literal word 'RQMNAME'
\( # literal open paren
(.*?) # non-greedy capture of >=0
\) # literal close paren
}xms;
if ( $line =~ /AMQ8409/ ) {
#if ( $line =~ /AMQ8409/ || $line =~ /\s\s\sQUEUE\(/ || $line =~ /RNAME/ ) {
my ($queue) = ($line =~ $match_queue);
my ($rname) = ($line =~ $match_rname);
my ($qmname) = ($line =~ $match_qmname);
</code>
This is capturing the value for only the first 2 times the code AMQ8409 appears , I am not able to caputre the other 2 because the way the input file is written . Can someone advice of a way to do that ? thanks much
17