我要檢查hashrefs這樣一個比較和驗證數據結構
{ foo => 65, bar => 20, baz => 15 }
對hashrefs的數組引用表達這樣
[
{ foo => { "<=" => 75 } },
{ bar => { "==" => 20 } },
{ baz => { ">=" => 5 } },
]
條件,如果滿足所有條件返回真值。
這兩種數據結構都不是預先確定的。一個是通過解析數據庫中的字符串構建的,另一個解析用戶輸入。
在上述情況下,我將返回true,但如果我查了hashref對
[
{ foo => { "<=" => 60 } },
{ bar => { "==" => 20 } },
{ baz => { ">=" => 5 } },
]
我將返回false,因爲FOO第一hashref不< = 60
的問題是:做這件事的最佳策略是什麼?
我想到的
- 通過EVAL
- 檢查對5種不同的預建subrefs(每箱一個用於>,<,< =,> =之中的適當的一個建造一系列subrefs的和==)
我會一起走錯路嗎?如果不是,什麼是最好的,評估或預建功能?
我已經看過Params :: Validate,但我擔心它會有很多開銷,而且我必須建立回調。
單個哈希引用數組只有在您有重複鍵時纔有用。例如。 ''{{foo => ...},{foo => ...}]'我懷疑你沒有重複的鍵,這會導致冗餘,你應該使用一個散列,並跳過數組。 – TLP 2012-03-04 11:11:34