Tengo una situación en la que tengo una aplicación y se asigna a un directorio que necesito procesar en un archivo zip. El mapeo es bastante simple:Constantes hash en Perl
CWA => "Financial",
PIP => "",
IFA => "IFA",
VDX => "Financial,
Es decir, si el nombre del archivo comienza con CWA
, sé el directorio Tengo que munge está bajo Financial
. Si el nombre del archivo comienza con IFA
, sé que el nombre del directorio es IFA
. Me gustaría configurar esto como un hash (bastante fácil), pero dado que estos valores realmente no cambian, me gustaría configurar este mapeo key => value como una constante hash.
No creo que esto sea posible, así que me gustaría hacer la próxima mejor opción. ¿Qué sería eso? O bien, ¿puede configurar una constante hash?
Estoy pensando en escribir una subrutina donde pasa un parámetro y devuelve el valor correcto. Después de todo, es realmente la forma en que funcionan las constantes, y garantizaría que las relaciones entre las claves y los valores no cambien a lo largo del programa.
O, simplemente puedo declarar la relación clave => valor al comienzo de mi programa y espero que los pares clave => valor no sean modificados por algo. Esto sería más fácil de leer y más fácil de modificar si es necesario, ya que está en la parte superior de mi código fuente.
¿Cuál es la mejor forma de implementar una constante de clave => valor?
mejor definir el mapa de mi% fuera de la función, justo por encima (y la función en un módulo separado al código de llamada, para que mi variable esté oculta). Esto evita una reinicialización innecesaria del hash cada vez que llama a la función. – ijw
Este es un buen punto. O bien, en 5.10+, use 'state', que proporciona el mejor ocultamiento pero que solo se inicializa una vez. – hobbs
El segundo funciona, pero tenía que hacer {+ shift}. De lo contrario, tomó {shift} como el índice en sí. –