My only guess would be that MakeDate() returns some kind of date object rather than a string - maybe it autostringifies when you print it, but NDBM_File can't cope with it and silently fails to store it. Just a guess, I fear.
A massive flamewar beneath your chosen depth has not been shown here
I've had some problems using DBM_* in Perl before - some of them have awkward little bugs like a tendency to die if you untie the object in the right place. But what yours is, I don't know.
A massive flamewar beneath your chosen depth has not been shown here