2010-06-12 23 views
0

我使用MLDBM堅持一些Perl數據結構,我想知道是否有以下的選擇:我可以使用文件句柄代替文件名來創建DBM文件嗎?

tie %hash, "MLDBM", $dbm_file, O_CREAT | O_RDWR, 0644; 

首先,我倒是喜歡能夠使用標準輸出,而不是一個已知的文件名。這可以被重定向到shell側的文件。

我一直在用像「tie」,「DBM」和「filehandle」這樣的關鍵字進行搜索,但這些命中常常討論將文件句柄綁定到事物上,而不是文件句柄。

有什麼建議嗎?

回答

3

那麼,MLDBM不會在乎,因爲它只是將參數傳遞給底層dbm庫(例如,DB_FileGDBM_File)。但我不知道任何接受文件句柄而不是文件名的dbm庫。此外,dbm文件需要可查找,因此shell必須重定向到實際文件,而不是管道。並且STDOUT可能會以只寫方式打開,這對dbm文件不起作用。

如果您只是使用MLDBM來實現持久性,而不是因爲數據庫對於內存來說太大,那麼您可以嘗試不同的方法。使用Storable來堅持你的數據結構。它可以讀取&寫入已經打開的文件句柄。

2

請記住,STDOUT是一個流,必須像磁帶一樣按順序讀取的字節序列。 DBM模塊提供了面向記錄的持久性,您可以在其中讀取和寫入任意記錄。

要僞造以上的DBM,您需要輸出某種日誌格式。寫入STDOUT似乎具有比使用DBM更高的優先級,因此可能採用不同的格式更合適。

有關您的應用程序的更多信息,我們可以提供對您更有用的建議。

相關問題