@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];wozu dient hier das Array?
weil ich, wie gesagt insgesamt 56 datensätze der form: www.google.de#Suchmahscine#1#123.456.789.101#80 habe... und die werden nun gesplittet um sie in das hash zu speichern
Das ist schon klar, beantowrtet aber nicht die Frage.
Es stellt sich ausserdem die Frage ob du mit use strict arbeitest? Damit lassen sich viele Tippfehler und Nachlässigkeiten vermeiden.
%daten_all = ( $id => {'URL',$url,'DESCR',$descr,'PRIO',$prio,'IP',$ip,'PORT',$port})
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?Nein, darf es nicht. Wenn Du aber die Variable überschreibst, darf es nichts anderes tun, als die Variable zu überschreiben. Egal, was vorher mal drin war.
welche Variable? id hat doch in jedem schleifendruchgang einen anderen wert. und %daten_all wird doch nicht überschrieben, sondern nur ein neues element (ansprechbar mit der neuen id) erzeugt, oder?
Nein, du überschreibst %daten_all komplett, dazu dient der Zuweisungsoperator.
Struppi.