AnyDBM_File - 提供多个 DBM 的框架
NDBM_File、DB_File、GDBM_File、SDBM_File、ODBM_File - 各种 DBM 实现
use AnyDBM_File;
该模块是一个“纯虚基类”——它本身没有任何内容。它只是为了从各种 DBM 包中继承。出于与 Perl 4 的兼容性原因,它优先使用 ndbm,然后是 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
在混合 universe 机器上,可能在 bsd 兼容库中,该库通常被回避。
如果您为一种访问方法编译,则可以进行修剪。
请参阅 DB_File。需要符号链接。
默认,但可以重新定义。
dbm(3)、ndbm(3)、DB_File(3)、perldbmfilter