我找不到一个纯Perl的解决方案,最接近的是Reini Urban对使用完美哈希和类型系统的研究。如果你想用XS来实现,CMPH(C Minimal Perfect Hashing Library)可能比gperf更适合。CMPH似乎针对非平凡的键大小和运行时生成进行了优化。在Perl中运行时生成完美哈希函数的成本可能会超过使用它的价值。为了获得好处,您需要将其编译并缓存。因此,编写一个XS模块,在XS编译时从固定的键列表生成该函数可能是最好的方法。出于好奇,你的数据有多大,集合包含多少个键?