que tienen que comprobar hashrefs como ésteestructuras de datos La comparación y validación de
{ foo => 65, bar => 20, baz => 15 }
contra un arrayref de hashrefs condiciones como esta
[
{ foo => { "<=" => 75 } },
{ bar => { "==" => 20 } },
{ baz => { ">=" => 5 } },
]
expresar y devolver un valor verdadero si se cumplen todas las condiciones.
Ninguna de las dos estructuras de datos está predeterminada. Uno se construye a partir del análisis de una cadena en una base de datos, y el otro de analizar la entrada del usuario.
En el caso anterior, volvería cierto, pero si he comprobado la hashref contra
[
{ foo => { "<=" => 60 } },
{ bar => { "==" => 20 } },
{ baz => { ">=" => 5 } },
]
volvería falsa, porque foo en el primer hashref no es < = 60.
El La pregunta es: ¿cuál es la mejor estrategia para hacer eso?
Pienso en
- la construcción de una serie de subrefs través eval
- comprobación con el apropiado entre 5 subrefs pre-construidos diferentes (uno por cada caso de>, <, < =,> = y ==)
¿Estoy yendo por el camino equivocado? y si no, ¿cuál es la mejor, eval o funciones preconstruidas?
He examinado Params :: Validate pero me preocupa que sea una gran sobrecarga, y tendría que construir las devoluciones de todos modos.
Una serie de referencias hash simples solo sería útil si tuviera claves duplicadas. P.ej. '[{foo => ...}, {foo => ...}]' Sospecho que no tiene claves duplicadas, lo que hace que esto sea redundante, y probablemente solo deba usar un hash, y omita la matriz. – TLP