我繼承了一段代碼與清空數據庫,如下所示的代碼段:如何有效清空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);