2009-11-27T17:20:46
jan999my %g_namen = ();
my $g_namen('Musterstrasse') = $ID;
Das zweite "my" muss weg (du hast
%g_namen ja schon vorher deklariert), und es müssen in der unteren Zeile geschwungene Klammern statt runde stehen. Außerdem ist die Zuweisung der leeren Liste bei der Deklaration überflüssig.
my %g_namen;
$g_namen{'Musterstrasse'} = $ID;
Und ja, der String für den Hashkey kann beliebigen Text enthalten.
Im obigen Fall könntest du sogar die Anführungszeichen weglassen, weil "Musterstrasse" nur ASCII-Buchstaben enthält
$g_namen{Musterstrasse} = $ID;
aber das wäre bei Straßennamen ja eher die Ausnahme.
Regel: Wenn du den String in den geschwungenen Klammern als Variablennamen (Identifier) benutzen könntest, musst du ihn als einfachen Hashkey nicht quoten.
Wahrscheinlich wirst du im Programm aber ohnehin eher eine (skalare) Variable dort stehen haben, dann muss ohnehin nichts gequotet werden:
$g_namen{$strasse} = $ID;