程序將非常大的字典式TXT文件讀入哈希。有時,有一個小寫版本的密鑰是可取的。下面我的解決方案是笨拙的,因爲它會搜索兩次,即使我們已經知道lc
版本存在:哈希:測試密鑰
if (exists $hash{ lc $key }) {
$key = lc $key;
}
if (exists $hash{ $key }) {
# lot of code involving $key
}
else {
# the key doesn't exist, other code
}
有沒有一種方法,以避免出現兩個exists
測試?如果lc $key
存在,我想對第二個if
做相同的代碼,但是我需要知道使用哪個版本lc
或者不是$key
。我希望將它凝聚成一對if-else
對。
瞭解有效密鑰的情況對程序的其他部分很重要,因爲它用於查找另一個散列中的信息。
這是否意味着您可以在同一個散列中同時擁有'foo'和'FOO'作爲鍵? – ThisSuitIsBlackNot
是的。這是名字和單詞的散列。有些名字也是單詞。所以如果用戶提供「約翰」和「約翰」,那麼「約翰」就是我所追求的。然後,我使用「john」來搜索另一個散列的值,並提供與「john」相關但不包含「John」的那個散列的所有關鍵字。 –
當您將這些鍵讀入搜索索引時,將這些鍵標準化,但這可能不值得。與較大的費用相比,兩個哈希查找並不昂貴。或者把文件放入SQLite並使用SQL(這將解決很多問題)。 – Schwern