Kurt Z: Subroutinen in Tabelle def. und aufrufen

Beitrag lesen

Hi

Aber ich bleibe dran. Hab auch schon einige vergebliche Versuche gestartet mit
diesen Hyroglyphen $@%!

hör mal so schwer ist es nicht, Perl realisiert verschachtelte Strukturen mit Referenzen.

==== Schritt 1

  
$pruef{'feld_1'}=[ $code_ref1,$coderef2 ];

baut ein Hash mit dem Key 'feld_1' auf mit einem Array von Codereferenzen als Eintrag.

[] liefert die Refrenz auf ein anonymes Array du hättest auch schreiben können

  
@sub_list=($code_ref1,$coderef2);  
$pruef{'feld_1'}=\@sub_list;

@code_refs wäre aber benannt und nicht anonym.

==== Schritt 2

greifts du auf $pruef{'feld_1'} zu erhälst du also eine Refrenz auf ein array.

um die Refrenz zu dereferenzieren schreibts du wieder ein @ davor.

Also entweder:

$sub_list_ref= $pruef{'feld_1'};  
@sub_list = @{$sub_list_ref} ; # hier könntest du die {} auch weglassen

oder aber gleich kürzer

@sub_list = @{ $pruef{'feld_1'} } ; # hier könntest du die {} NICHT weglassen

==== Schritt 3

die for Schleife braucht eine Liste also

  
for $code_ref ( @{ $pruef{'feld_1'} } )  

ich hab mal ne Übersicht geschrieben:
http://board.perl-community.de/thread/11304/startWithMessage=10#MSG15

In Perl sind die Datenstrukturen primär listenorientiert, nicht Refrenzen wie in den meisten anderen Sprachen, d.h. du musst sie explizit in Referenzen überführen um sie zu schachteln oder zu übergeben.

http://board.perl-community.de/thread/11291/startWithMessage=11

DER TRICK IST ALSO: Denk gleich in Refrenzen die du nur bei Bedarf in die "Listenform" überführst.

schreib jetzt ein bisschen Code dann bekommst dus auch hin und wenn etwas nicht klappt dann poste ihn  und dir wird geholfen.

Bye
 Kurt

PS: nein ich habe den Code nicht vorher ausprobiert.