我继承了一段代码与清空数据库,如下所示的代码段:如何有效清空Perl DBM文件?
dbmopen (%db,"file.db",0666);
foreach $key (keys %db) {
delete $db{$key};
}
dbmclose (%db);
这通常是好的,但有时这种清理代码调用之前数据库变得非常大,它通常是当用户想要做一些重要的事情。
有没有更好的方法来做到这一点?
我继承了一段代码与清空数据库,如下所示的代码段:如何有效清空Perl DBM文件?
dbmopen (%db,"file.db",0666);
foreach $key (keys %db) {
delete $db{$key};
}
dbmclose (%db);
这通常是好的,但有时这种清理代码调用之前数据库变得非常大,它通常是当用户想要做一些重要的事情。
有没有更好的方法来做到这一点?
您可以直接删除文件:
unlink $file;
由于您的第三个参数dbmopen是一个文件模式,不是undef
,dbmopen
会在下次调用该文件时重新创建该文件:
dbmopen my %db, $file, 0666;
其实,一位同事指出了我的解决方案。你显然可以这样做:
dbmopen (%db,"file.db",0666);
%db =();
dbmclose (%db);
在关闭数据库之前清除散列。
这里有另一个答案,由于某种原因已经消失,但它可能会更快,所以我转发它(不知道为什么它被删除)。它涉及取消与相应文件将其删除,然后只重新创建一个空数据库文件,如下所示:
unlink ("file.db");
dbmopen (%db,"file.db",0666);
dbmclose (%db);