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;