in reply to Database still overwriting itself

One thing stands out...
$dbm{'$unverified'} is not the same as $dbm{$unverified}

Try this:

my $unverified = 'this'; my %dbm = ( this => 'bar', ); print $dbm{$unverified},$/; print $dbm{'$unverified'},$/;