I've inherited a piece of code with a snippet which empties the database as follows:
dbmopen (%db,"file.db",0666);
foreach $key (keys %db) {
delete $db{$key};
}
dbmclose (%db);
This is usually okay but sometimes the database grows very large before this cleanup code is called and it's usually when a user wants to do something important.
Is there a better way of doing this?
You can just delete the file:
unlink $file;
Since your third argument to dbmopen is a file mode and not undef
, dbmopen
will recreate the file the next time it's called:
dbmopen my %db, $file, 0666;
Actually, a workmate has pointed me to a solution. You can apparently do:
dbmopen (%db,"file.db",0666);
%db = ();
dbmclose (%db);
which clears out the hash before closing the database.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With