my (%headers); my ($lastheader); foreach my $line (@msg) { last if ($line =~ m/^\s*$/); # Reached end of headers if ($line =~ m/^\s+(.+)/) { $headers{$lastheader} .= $1; } else { my @parts = split(/:/, $line, 2); $headers{$parts[0]} = $parts[1]; $lastheader = $parts[0]; } }