AnyDBM_File - 提供多個 DBM 的架構
NDBM_File、DB_File、GDBM_File、SDBM_File、ODBM_File - 各種 DBM 實作
use AnyDBM_File;
這個模組是一個「純虛擬基底類別」——它本身沒有任何東西。它只是用來繼承各種 DBM 套件。它偏好 ndbm,原因是與 Perl 4 相容,然後是 Berkeley DB(請參閱 DB_File)、GDBM、SDBM(它始終存在——它隨附 Perl),最後是 ODBM。這樣,過去透過 dbmopen() 使用 NDBM 的舊程式仍然可以這樣做,但新的程式可以重新排序 @ISA
BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
use AnyDBM_File;
擁有多個 DBM 實作,可以輕易地複製資料庫格式
use Fcntl; use NDBM_File; use DB_File;
tie %newhash, 'DB_File', $new_filename, O_CREAT|O_RDWR;
tie %oldhash, 'NDBM_File', $old_filename, 1, 0;
%newhash = %oldhash;
以下是不同套件提供的功能部分表格
odbm ndbm sdbm gdbm bsd-db
---- ---- ---- ---- ------
Linkage comes w/ perl yes yes yes yes yes
Src comes w/ perl no no yes no no
Comes w/ many unix os yes yes[0] no no no
Builds ok on !unix ? ? yes yes ?
Code Size ? ? small big big
Database Size ? ? small big? ok[1]
Speed ? ? slow ok fast
FTPable no no yes yes yes
Easy to build N/A N/A yes yes ok[2]
Size limits 1k 4k 1k[3] none none
Byte-order independent no no no no yes
Licensing restrictions ? ? no yes no
在混合宇宙機器上,可能在 bsd 相容函式庫中,而這通常會被避開。
如果你編譯為一種存取方法,可以進行修剪。
請參閱 DB_File。需要符號連結。
預設如此,但可以重新定義。
dbm(3)、ndbm(3)、DB_File(3)、perldbmfilter