It looks like the problem is that you are not updating at the top level, so the TIE interface is not picking up your changes. See the note under the BUGS section of the MLDBM (not MLDBM::Sync) docs. It's a limitation of Perl's TIE interface, and has a simple (albeit not pretty) workaround.