http://qs321.pair.com?node_id=656720

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks , I have the following input file which I try to capture data from :
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.
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 :
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 =~ /RNAM +E/ ) { my ($queue) = ($line =~ $match_queue); my ($rname) = ($line =~ $match_rname); my ($qmname) = ($line =~ $match_qmname);
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