my (@records, $cur_rec); while () { chomp; if (s/^\s+//) { $cur_rec->{'summary'} .= " $_"; next } my ($tick,$cust,$stat,$prio,$owner) = /^ ([\w-]+): \s* # ticket (\[.*?\]) \s* # customer (\[.*?\]) \s* # status (\[.*?\]) \s* # priority (\[.*?\]) # owner /x or next; $cur_rec = { 'ticket#' => $tick, 'customer' => $cust, 'status' => $stat, 'priority' => $prio, 'owner' => $owner, }; push @records, $cur_rec; }