如何在磁盘上而不是在 RAM 中保存大哈希值?

How to keep a big hash on disk instead of in RAM?

由于散列很大,我的 RAM 太少,无法完成计算。是否有一个嵌入式 Perl 模块可以让我使用散列而无需将其全部保存在 RAM 中?我预计它会达到 4GB 左右,而我的脚本可用空间略小于 2GB。我认为处理时间或磁盘 I/O 不是问题。

您可以使用 dbm_open to open a hash connected to a DBM file。这些不是特别复杂,可以处理简单键和值的浅散列。

对于更复杂的东西,我建议使用 SQLite

您可以尝试 DB_File 模块(或类似模块)。
内存使用提示:https://www.perlmonks.org/?node_id=146377

查看 AnyDBM_File 以了解其他可用的类似模块并进行初步比较。

$hash{$key1,$key2} 语法可用于将多级散列转换为平面(单级)散列。
有关详细信息,请参阅 man perlvar 中的 $SUBSCRIPT_SEPARATOR