While you mentioned only using Data::Dumper, your reasoning for choosing it was it saves in a readable format.
You might consider XML::Dumper instead.
You gain the benefit of not having to eval{} the data back in,
which could be dangerous, and it is still readable.
(well, readable enough at any rate, not quite as nice as Data::Dumper)