malte: mehr-d hash überschreibt sich selber - wieso?

Beitrag lesen

hallo, das hash %daten_all soll unter einer $id bestimmte URLs mit IPs, Beschreibungen (DESCR), Ports und einer von mir zuvor festgelegtn Priorität (PRIO) speichern.

Die bestehenden Daten liegen im folgenden Format vor:
URL#DESCR#PRIO#IP#PORT, also z.b.
www.google.de#Suchmahscine#1#123.456.789.101#80

foreach(@arr_daten) {
 @arr_daten_splitted = split(/#/,$_); # Daten als Array
 $url = @arr_daten_splitted[0];
 $descr = @arr_daten_splitted[1];
 $prio = @arr_daten_splitted[2];
 $ip = @arr_daten_splitted[3];
 $port = @arr_daten_splitted[4];
 $id++;
 %daten_all = ( $id => {'URL',$url,'DESCR',$descr,'PRIO',$prio,'IP',$ip,'PORT',$port})

}

wenn ich jetzt z.b. "print $daten_all{2}{DESCR};" mache, bekomme ich nix. einzige möglichkeit ist die ID des letztens hash elements (in meinem fall gibt es 56 datensätze, also "print $daten_all{56}{DESCR}"), die dann DESCR, IP, PORT etc ausgeben kann.

ich dachte, dass ein hash nur auf keinen "key hört", wenn ich also einen neuen key generiere ($id++) darf perl das doch nicht über den vorherigen speichern, oder?

was habe ich falsch gemacht?

danke für eure hilfe!