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.