in reply to Parsing to a hash suggestions

Also consider Parse::RecDescent as a general-purpose parsing solution (albeit complicated) that is good for most things.