DB_File is good.
DBM::Deep was designed for this. And, the nice part is that you don't need to change any part of your script other than the Storable::retrieve part. The rest just assumes that it's a hash. :-)
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?