Jak przekonwertować hash-per-hasze na bardziej elastyczną strukturę danych?

W szybkim i brudnym skrypcie Perla mam taką strukturę danych:

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

Klawisze skrótu przyjmują takie wartości:

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

Ponadto klawisze skrótu są unikalne. Na przykład brak wartości dlaTAX parametr koliduje z wartością innego innego parametru.

Rozpoczynam średni projekt pracujący z tymi danymi i chciałbym wdrożyć strukturę danych w bardziej elastyczny sposób. Nie znam wszystkich funkcji pobierania danych, których będę potrzebował, ale oto kilka przykładów:

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

Moją początkową skłonnością było przechowywanie danych jako hash-haszy i zbudowanie jednej lub więcej funkcji użytkowych (prawdopodobnie jako część klasy) w celu pobrania wartości. Ale potem zastanawiałem się, czy istnieje lepsza strategia - jakiś sposób przechowywania danych bazowych poza hash-haszy. Wszelkie porady dotyczące podejścia do tego problemu będą mile widziane.

questionAnswers(5)

yourAnswerToTheQuestion