Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 MLDBM 来保留一些 Perl 数据结构,我想知道是否有以下替代方法:
tie %hash, "MLDBM", $dbm_file, O_CREAT | O_RDWR, 0644;
首先,我希望能够使用 STDOUT,而不是已知的文件名。然后可以将其重定向到外壳端的文件。
我一直在使用诸如“tie”、“DBM”和“filehandle”之类的关键字进行搜索,但搜索结果倾向于将文件句柄与事物联系起来,而不是将事物与文件句柄联系起来。
有什么建议么?
好吧,MLDBM不会在意,因为它只是将参数传递给底层 dbm 库(例如,DB_File或GDBM_File)。但我不知道任何接受文件句柄而不是文件名的 dbm 库。此外,dbm 文件需要可搜索,因此 shell 必须重定向到实际文件,而不是管道。并且 STDOUT 可能会以只写方式打开,这对 dbm 文件不起作用。
如果您只是将 MLDBM 用于持久性,而不是因为数据库太大而无法存储,那么您可以尝试不同的方法。使用Storable来持久化你的数据结构。它可以读取和写入已经打开的文件句柄。
请记住,这STDOUT是一个流,一个必须像磁带一样顺序读取的字节序列。DBM 模块提供面向记录的持久性,您可以在其中读取和写入任意记录。
STDOUT
要伪造 DBM over STDOUT,您需要输出某种日志格式。写入STDOUT似乎比使用 DBM 具有更高的优先级,因此也许不同的格式会更合适。
有了有关您的应用程序的更多信息,我们可以提供对您更有用的建议。