Perl wrote: > > I am attempting to parse a log file that looks something like: > > 759033281 TE18 <Vups_MsgStore> constructor - add to MDBTable > EX:/O=MSGENG/OU=EUROPE/CN=RECIPIENTS/CN=PHARWOOD > 759033281 TE18 <Vups_MsgStore> AddRef=2 > EX:/O=MSGENG/OU=EUROPE/CN=RECIPIENTS/CN=PHARWOOD > 759033281 TE18 <MSM> S-REXCH-MSG-07 > 759033281 TE18 <MSM> S-REXCH-MSG-06 > 759033281 TE18 <MSM> C-REXCH-MSG-07 > 759033281 TE18 <MSM> C-REXCH-MSG-06 > 759033281 TE18 <VUPSMAPI> Vups_MailboxLogon done 0x0 > 759033281 TE18 <MSM> C-REXCH-MSG-06 > 759033281 TE18 <MSM> No timestamp for thread > 759033281 TE18 <MsgLog> IMAPISession::OpenMsgStore M 109 > Q 0 > > The only lines I am interested in are ones that have "PHARWOOD" followed > by a line that has "OpenMsgStore" in it. > > If I could explain this in English, I would want to say: > > "Search for an instance of "PHARWOOD" and once found print that line. > Then search for the very next instance of "OpenMsgStore" that follows > PHARWOOD (whether it be the next line or several lines down) and print > that." > > The code I have so far works but I don't understand how to change my > Regex filter to change from PHARWOOD to OpenMsgStore and back again. Or > is there a simpler method?
Something like this should work: my $umlogs = 'z:'; local @ARGV = <$umlogs/*>; my $found = 0; while ( <> ) { if ( /PHARWOOD/ ) { print; $found = 1; } if ( $found and /OpenMsgStore/ ) { print; $found = 0; } } __END__ John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]