Eine Referenz als Textparameter übermitteln

Ich habe eine Frag die sich an Perl Profis richtet.

Ich möchte an eine Unterroutine (bzw. eine Methode eines Packages)
eine Referenz als Parameter übergeben.
Da alle Parameter Schlüsselwortparameter sind sieht der Aufruf
folgendermaßen aus.

wieland::forms::combobox(‚name=box1‘,‚array=…‘)

Um den Parameter array geht es. Wie kann ich den übertragen und die Referenz in der Methode wieder richtig verwenden?

Thomas

Ich habe eine Frag die sich an Perl Profis richtet.

Ich möchte an eine Unterroutine (bzw. eine Methode eines
Packages)
eine Referenz als Parameter übergeben.
Da alle Parameter Schlüsselwortparameter sind sieht der Aufruf
folgendermaßen aus.

wieland::forms::combobox(‚name=box1‘,‚array=…‘)

Bist du sicher? Ich denke du meinst eher sowas wie

foo::bar::combobox(‚name‘=>‚box1‘,‚array‘=>$array_ref);

, oder doch

wieland::forms::combobox(‚name=box1‘,‚array=val1,val2,val3,val4…‘)

das wird manchmal gemacht, ist aber schlechter stil. (bzw. alter stil aus der zeit als perl noch keine referenzen kannte. also zeig ich dir mal wie man es richtig macht:

#
$scalar="skalarer wert";
@array=("a1","a2","a3");
%hash=("key1"=\>"val1", "key2"=\>"val2");
#
#referenzen erzeugen
#
$arrayref=\@array;
$hashref=\%hash;
#
# aufrufe (alle equiv.)
#
&foo ("skalar"=\>$scalar, "hash"=\>$hashref, "array"=\>$arrayref);
&foo ("skalar"=\>$scalar, "hash"=\>\$hash, "array"=\>\$array);
&foo ("skalar"=\>"skalarer wert", "hash"=\>{"key1"=\>"val1", "key2"=\>"val2"}, "array"=\>["a1","a2","a3"]);
#
#die funktion
#
sub foo {
 %args = @\_;
 $s=$args{"skalar"};
 $aref=$args{"array"};
 $href=$args{"hash"};

 #ganzes array referenzieren
 @a=@{$aref};
 #direkter zugriff auf arrayelement mit referenzen
 $wert=$aref-\>[2];
 #ganzen hash
 %h=%{$href};
 #hashelement
 $wert=$href-\>{"key1"};
}

cu, holli

Hallo Markus,

ich bin dir für deine Hilfe sehr dankbar. Hat funktioniert.

Thomas