Wie konvertiere ich einen Perl-Hash in eine flexiblere Datenstruktur?

In einem schnellen Perl-Skript habe ich eine Datenstruktur wie die folgende:

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

Die Hash-Schlüssel nehmen Werte wie diesen an:

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

Darüber hinaus sind die Hash-Schlüssel eindeutig. Zum Beispiel kein Wert für dieTAX Parameter kollidiert mit einem Wert für einen anderen Parameter.

Mit diesen Daten starte ich ein mittelständisches Projekt und möchte die Datenstruktur flexibler umsetzen. Ich kenne noch nicht alle Funktionen zum Abrufen von Daten, die ich benötige, aber hier einige Beispiele:

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

Meine anfängliche Neigung bestand darin, die Daten weiterhin als Hash zu speichern und eine oder mehrere Hilfsfunktionen (wahrscheinlich als Teil einer Klasse) zu erstellen, um die Werte abzurufen. Aber dann habe ich mich gefragt, ob es eine bessere Strategie gibt - eine andere Art, die zugrunde liegenden Daten zu speichern als einen Hash. Jeder Rat, wie man dieses Problem angeht, wäre willkommen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage