my ($name,$val,%hostinof); while (<>) { if ($name && /^\s+(.*)/) { push @{$hostinfo{$name}}, $1); next } if (($name,$val) = /^(\w[\s\w]+) [ .]+:\s*(.*)/) { $name = lc $name; $hostinfo{$name} = [ $val ]; } else { $name = '' ] }