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.