perl 在GDBM中存储任何哈希,我可以在其中搜索吗?

bq8i3lrv  于 12个月前  发布在  Perl
关注(0)|答案(2)|浏览(113)

阅读关于GDBM在this book中,他们只给予简单的例子,可以存储的数据结构。

$dbm{'key'} = "value";

背景

我想保存许多小的文本文件在数据库中只供本地使用,并使用嵌套的哈希和数组来表示文件路径。它不一定是GDBM,但它似乎是Perl唯一的键/值数据库。

问题

我可以在GDBM中存储任何哈希值,无论它包含许多嵌套哈希值和数组吗?
GDBM是否提供了任何搜索功能,或者我只能用Perl实现自己的搜索功能?

qlvxas9a

qlvxas9a1#

DBM数据库根本不支持数组。它们本质上与Perl散列相同,只是项目的值只能是简单的字符串,而不能是数字或引用。DBM数据库中每个数据项的键和值都是简单的字节序列。也就是说,API用char指针和int大小表示它们。
在这个约束下,你可以随意使用数据库,但请记住,与SQL数据库不同,每个键都必须是唯一的。
您可以通过使用一次访问获取的数据作为下一次访问的键来模拟嵌套散列,但请记住对唯一键的要求,这远非理想。
或者,获取的值可以是另一个DBM数据库的名称,您可以继续进一步查询。
最后一个选项是将所有键连接成一个值,

$dbm{aa}{bb}{cc}

实际上会被实现为类似于

$dbm{aa_bb_cc}
klsxnrf1

klsxnrf12#

实际上,你可以在perl中存储散列的散列,或者列表的列表。你可以使用CPAN的MLDBM模块,沿着你选择的dbm。
看看这本在线pdf书"Beginning Perl",然后转到chapter 13
复杂的部分是弄清楚如何访问不同级别的引用。要搜索,你必须遍历键并解析值。

相关问题