Given that you have "huge data", you will want to use DBM::Deep. This is one of the reasons this module was written. If you have any questions, please don't hesitate to ask me - I'm the current maintainer.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?