¿Cómo convertir un hash de hash de Perl en una estructura de datos más flexible?

En un script Perl rápido y sucio, tengo una estructura de datos como esta:

$tax_revenue{YEAR}{STATE}{GOVLEV}{TAX} = integer

Las teclas hash asumen valores como este:

YEAR: 1900 .. 2000
STATE: AK, AL, ... WY
GOVLEV: state, local
TAX: type of tax (income, sales, etc.)

Además, las claves hash son únicas. Por ejemplo, ningún valor para elTAX El parámetro choca con un valor para otro parámetro.

Estoy comenzando un proyecto de tamaño mediano trabajando con estos datos y me gustaría implementar la estructura de datos de una manera más flexible. Todavía no conozco todas las funciones de recuperación de datos que necesitaré, pero aquí hay algunos ejemplos:

# Specify the parameters in any order.
Tax_rev( qw(1902 WY state property) );
Tax_rev( qw(state property 1902 WY) );

# Use named parameters.
Tax_rev(year => 1902, state => 'WY', govlev => 'state', tax => 'property');

# Use wildcards to obtain a list of values.
# For example, state property tax revenue in 1902 for all states.
Tax_rev( qw(1902 * state property) );

Mi inclinación inicial fue seguir almacenando los datos como un hash-de-hash y construir una o más funciones de utilidad (probablemente como parte de una clase) para recuperar los valores. Pero luego me pregunté si hay una mejor estrategia: alguna forma de almacenar los datos subyacentes que no sea un hash-of-hashes. Cualquier consejo sobre cómo abordar este problema sería apreciado.

Respuestas a la pregunta(5)

Su respuesta a la pregunta