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.)