我要检查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