my $slrp = ''; while(<$fh>){ if (/ ^('domain.com' address bit)$ ## regex to catch lines that match the section start (capturing it too) /x){ ## you have found a new section so process the previous one ## provided you have already seen one... &process_slrp() if (defined$slrp); ## restart the slurp, starting with the new domain.com bit ...store $slrp somewhere appropriate... ## reset $slrp = $1; ## start again } else { ## it isn't the start of a section so stick it into the slurp $slrp .= $_; } } #### m{ (domain bit.+) ##domain bit and everything until Successful downloads:(.*) ## next title, capture everything else until.. Failed downloads:(.*) ## next title, capture everything until... etc... }mxog