假设我有一个关键字文件,其中包含“ab”、“ef”、“ab ef”(现实生活:另外一千个条目)。我想查看我的每个关键字出现的页面
page 0
ab
gg
^L
page 1
ab ef
^L
page 2
Ab
ef
[another thousand pages, 2 million words, each ^L separated]
我想回来
ab => [ 0,1,2 ]
ef => [ 1,2 ]
ab ef => [ 1 ]
我知道如何非常低效地做到这一点。将文件slurp成一个长字符串。小写它。将其拆分为页面。对于每个页面,正则表达式每个(小写)关键字条目以查看它是否出现在页面上。如果是这样,则在包含我的关键字的哈希末尾添加页码作为键。不难,但令人痛苦地低效。我的算法看起来更像是一种 C 方法,而不是一种优雅的 perl 方法。
唉,我想不出更好的选择。我什至不能先将主文件读入散列,因为空格分隔的多词关键字的可能性会使这种不雅的错误逻辑。
也许 perl 是错误的工具?!