title image


Smiley Re: Wie übergibt man ein HASH an ein Unterprogramm
Hi Sven,zuerst einmal zwei Dinge:1)Du übergibst als zweiten Parameter @datenhash@ steht aber für Array's. Hash's werden mit % gekennzeichnet.2)Im Sub verwendest Du plötzlich als Hash $liste{$name}Du solltest dich vieleicht auf einen Namen einigen.Viel schwerwiegender ist jedoch das Problem das alle Parameter eines SUB's in das Array @_ gespeichert werden.Array's können jedoch weder UnterArray's noch UnterHash's direckt speichern, sondern nur Skalare!Nun behilft man sich der Möglichkeit das man von jeder Variable auch eine Referenz (Zeiger) erstellen kann (z.B. \$Var) wechle selbst als Skalar gilt.Um an den ursprünglichen Wert wieder heran zu kommen muß vor der ReferenzVariable nur noch zusätzlich das Zeichen für den ursprünglichen DatenTypen vorgesetzt werden.z.B.:$RefSkalar = \$Skalar -> $NeuSkalar = $$RefSkalar $RefHash = \%Hash -> %NeuHash = %$RefHashFür deinen Fall würde daß dann folglich aussehen:    $Hash{'Titel'} = "TitelWert";print "Gefunden = ".&ask_CB("Titel", \%Hash);sub ask_CB{  local $Such = $_[0];local $RefHash = $_[1];print "$Such => $$RefHash{$Such}\n";}Beachte daß es $$RefHash{$Such} heißen muß statt %$RefHash{$Such},da wie beim einfachen Zugriff auf Hash-Werte das Ergebnis von $Hash{$Such} einen Skalar darstellt.Hoffe geholfen zu haben ;)CU

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: