A lot depends on what the data is. Number::Phone uses a DBM::Deep DB in the __DATA__ section to accomplish this. Personally, I prefer separate files. This way, I can work with multiple versions of the data in question.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?