代码之家  ›  专栏  ›  技术社区  ›  Dancrumb

我可以使用文件句柄而不是文件名来创建DBM文件吗?

  •  0
  • Dancrumb  · 技术社区  · 15 年前

    我正在使用MLDBM来持久化一些Perl数据结构,我想知道是否有其他方法可以替代以下方法:

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

    首先,我会 喜欢 能够使用stdout,而不是已知的文件名。然后可以将其重定向到shell端的文件。

    我一直在搜索关键字,如“tie”、“dbm”和“filehandle”,但点击率倾向于谈论将filehandle绑定到事物,而不是将事物绑定到filehandle。

    有什么建议吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   cjm    15 年前

    好, MLDBM 不会在意,因为它只是将参数传递给底层DBM库(例如, DB_File GDBM_File )但我不知道有哪个DBM库接受文件句柄而不是文件名。另外,DBM文件需要是可查找的,因此shell必须重定向到实际文件,而不是管道。而stdout可能只以写方式打开,这对DBM文件不起作用。

    如果您只是使用MLDBM进行持久化,而不是因为数据库对于内存来说太大,那么您可以尝试另一种方法。使用 Storable 保持数据结构。它可以读写已经打开的文件句柄。

        2
  •  2
  •   Greg Bacon    15 年前

    记住 STDOUT 是一个流,一个字节序列,必须像磁带一样按顺序读取。DBM模块提供面向记录的持久性,您可以在其中读取和写入任意记录。

    伪造DBM 标准输出 ,您需要输出某种日志格式。写信给 标准输出 似乎比使用DBM具有更高的优先级,所以也许不同的格式更合适。

    有了关于您的申请的更多信息,我们可以提供对您更有用的建议。