use strict; use warnings; use DBM::Deep; use Data::Dumper; use constant DUMP => 0; # 1 for debugging { my $db_file = 'href_nocopy'; { my $db = DBM::Deep->new( $db_file ); $db->{key} = {}; print "Dump: ", Dumper($db) if DUMP; $db->clear(); } print "\nDeleting $db_file\n"; unlink( $db_file ) or warn $!; # succeeds $db_file = 'href_copy'; { my $db = DBM::Deep->new( $db_file ); $db->{key} = {}; my $db2 = $db->{key}; print "\nDump: ", Dumper($db) if DUMP; print "Dump: ", Dumper($db2) if DUMP; $db->clear(); } print "\nDeleting $db_file\n"; unlink( $db_file ) or warn $!; # now succeeds! $db_file = 'nonref_copy'; { my $db = DBM::Deep->new( $db_file ); $db->{key} = 1; my $db2 = $db->{key}; print "\nDump: ", Dumper($db) if DUMP; print "Dump: ", Dumper($db2) if DUMP; $db->clear(); } print "\nDeleting $db_file\n"; unlink( $db_file ) or warn $!; # succeeds }