Your problem is that you are using dbmopen. It uses the first of several possible local dbm implementations. Which means that going from one machine to another its file format does not remain the same. It also means that on a single machine if you install a better dbm implementation, the file format it uses can change on you, causing loss of data.
And no, I have no idea why there aren't BIG RED WARNINGS everywhere about this pitfall.