in reply to Is this a job for Parse::RecDescent?
I have grown very fond of YAML as a storage-format. It is well-supported, and a definite “plus” is that it is easily human-readable. But it might not be suitable for a file that you intend to be human-edited. (XML would probably be the best choice for that.)