Como converter um hash-de-hash Perl para uma estrutura de dados mais flexível?

Em um script Perl rápido e sujo, eu tenho uma estrutura de dados como esta:

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

As chaves de hash assumem valores como este:

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

Além disso, as chaves hash são exclusivas. Por exemplo, nenhum valor para oTAX O parâmetro colide com um valor para outro outro parâmetro.

Eu estou começando um projeto de tamanho médio trabalhando com esses dados e gostaria de implementar a estrutura de dados de uma maneira mais flexível. Eu não conheço toda a funcionalidade de recuperação de dados que ainda preciso, mas aqui estão alguns exemplos:

# 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) );

Minha inclinação inicial era manter os dados armazenados como hash-of-hashes e construir uma ou mais funções de utilidade (provavelmente como parte de uma classe) para recuperar os valores. Mas então me perguntei se existe uma estratégia melhor - alguma maneira de armazenar os dados subjacentes além de um hash-of-hashes. Qualquer conselho sobre como abordar este problema seria apreciado.

questionAnswers(5)

yourAnswerToTheQuestion