NDBM_File - 与 ndbm 文件的绑定访问
use Fcntl; # For O_RDWR, O_CREAT, etc.
use NDBM_File;
tie(%h, 'NDBM_File', 'filename', O_RDWR|O_CREAT, 0666)
or die "Couldn't tie NDBM file 'filename': $!; aborting";
# Now read and change the hash
$h{newkey} = newvalue;
print $h{oldkey};
...
untie %h;
NDBM_File
在 Perl 哈希变量和 NDBM_File 格式的文件之间建立连接;您可以像操作 Perl 哈希一样操作文件中的数据,但当您的程序退出时,数据将保留在文件中,以便在下次运行程序时使用。
使用 Perl 内置的 tie
函数与 NDBM_File
一起使用,以在变量和文件之间建立连接。tie
的参数应该是
您要绑定的哈希变量。
字符串 "NDBM_File"
。(这告诉 Perl 使用 NDBM_File
包来执行哈希的功能。)
您要绑定到哈希的文件的名称。
标志。使用以下标志之一
如果要创建不存在的文件,请将 O_CREAT
添加到其中任何一个,如示例所示。如果您省略 O_CREAT
且文件尚不存在,则 tie
调用将失败。
如果创建新文件,则使用的默认权限。实际权限将通过用户的 umask 进行修改,因此您可能应该在此处使用 0666。(请参阅 "umask" in perlfunc。)
如果失败,则 tie
调用将返回一个未定义的值,并可能将 $!
设置为包含无法绑定文件的原因。
ndbm store 返回 -1,errno 22,键 "..." at ...
当您尝试存储过长的键或值时,将发出此警告。这意味着该更改未记录在数据库中。请参阅下面的 BUG 和警告。
请勿接受来自不受信任来源的 NDBM 文件。
在现代 Linux 系统上,这些通常是 GDBM 文件,它们在不同平台之间不可移植。
GDBM 文档并未暗示来自不受信任来源的文件可以安全地与 libgdbm
一起使用。
不使用 GDBM 兼容性来支持 ndbm 的系统将使用特定于平台的库,该库可能继承自 BSD 系统,在该系统中使用不受信任的文件可能是安全的,也可能不安全。
恶意制作的文件可能会导致 perl 崩溃,甚至暴露安全漏洞。
对可以存储在 NDBM 文件中的数据大小有一些限制。最重要的是,键的长度加上其关联值的长度不得超过 1008 个字节。