use Modern::Perl; while () { my ($month, $day, $year, $time, $ampm) = (split ' ')[0 .. 4]; next unless $ampm and $ampm =~ m/AM|PM/i; my $datetime = join ' ', ($month, $day, $year, $time, $ampm); my $xml; my $level; my $orderID; my $orderNumber; while () { if (/([^:]+)\s*:\s*((Authenticate RequestXML)|(Authenticate ResponseXML)|(Authorize ResponseXML))\s*:\s*/i){ $level = $1; $xml = $2; } if (m|(\d+)|) { $orderID = $1; } if (m|(\d+)|) { $orderNumber = $1; } if (m|^$|) { say "$datetime - $level - $xml - $orderNumber - $orderID" if $xml; last; } } } __DATA__ Nov 16, 2012 5:17:53 AM com.sitapp01.commerce.CentinelUtil.AYCentinelUtil getAuthenticateResponse() FINER: ENTRY Nov 16, 2012 5:17:53 AM com.sitapp01.commerce.CentinelUtil.AYCentinelUtil setAuthenticateRequest() : FINER: ENTRY Nov 16, 2012 5:17:53 AM com.sitapp01.commerce.CentinelUtil.AYCentinelUtil setAuthenticateRequest() : INFO: Authenticate RequestXML : 1.7 2.8 fhsdkjvdxfv cmpi_authenticate 202 JTC 50515 HC 8585273913266697 202|50515|0einiSheyXIFqE4KYrlD|HC Nov 16, 2012 5:17:53 AM com.sitapp01.commerce.CentinelUtil.AYCentinelUtil setAuthenticateRequest() : FINER: ENTRY Nov 16, 2012 5:17:54 AM com.sitapp01.commerce.CentinelUtil.AYCentinelUtil getAuthenticateResponse() ETC ETC ETC ...