in reply to array of hashes use

For the inner loop you can use an anonymous hash like:
while ($line = <FH>) { chomp $line; next if $line =~ /^$/; next if $line =~ /[#{}]/; $line =~ /^\s*(\S+)\s*(\S+)/; # new portion $host[$counter]{$1} = {$2}; }
You could push or simply use a counter (which keeps the code cleaner). Just one idea anyway :).

Bioinformatics