in irgendeinem schlauen Forum habe ich die Empfehlung unset() zu verwenden aufgeschnappt. Das ist keine Funktion von mir ( und laut Perl-Doku auch keine von Perl ;-) ) trotzdem scheint sie zu existieren und tatsächlich die Arrays wieder zu leeren.
Nach eurem Feedback habe ich sie aber nun asu dem Code entfernt.Tatsächlich war "my @ret = ([@{@a}], [@{@b}]);" das, was ich wollte.
Ich versuche mit:
.
.
return ( @vornamen, @nachnamen );my ( @vornamen, @nachnamen ) = gib_mir_2_zurueck
> die beiden Rückgabewerte entgegen zu nehmen und gleichzeitg die Referenzen wieder zu dereferenzieren.
> Offensichtlich ist das falsch. Ich vermute er packt mir beide Arrays in eins und speichert das in @vornamen?!
> Trotz wilder Suche in den weiten des Web habe ich kein Beispiel für eine Lösung gefunden.
Du solltest schlicht die grundlegenden Dokumentationen lesen.
Perl übergibt an Subfunktionen schlicht Listen. Ein return übergibt ebenfalls eine Liste. Wenn du nicht weisst, was eine Liste ist, hast du ein Problem. Ein Array speichert zum Beispiel eine Liste von Arrayelementen.
@arr=func();
wird immer die gesammte Liste aufnehmen. Wenn du das nicht willst:
( $elem1, $elem2, @rest ) = func();
elem1 und elem2 sind Scalare und können nur je ein Element aus der Liste aufnehmen.
mfg Beat
--
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische