zifnab: Rückgabe eines mehrdimensionalen Arrays

Beitrag lesen

Sobald ich also am Ende der Funktion 'unset' auf die 2 Arrays aufrufe, fliegt mir der Rückgabewert um die Ohren.

Jetzt verstehe ich. Die Funktion unset ist von dir (ich dachte schon ich hätte mal wieder ein neues Perl Feature verpaßt). Dann frag ich mich aber wirklich warum du etwas löscht, was du später verwenden willst?

Auch wenn ich es für umständlich und performancefeindlich halte ein Array unnötig zu kopieren, du kannst natürlich auch Referenzen dereferenzieren, das sieht aber extrem unschön aus.

sub x{

my @a = qw(1 2 3 4);
my @b = qw(4 3 2 1);

my @ret = ([@{@a}], [@{@b}]);

@a = ();
@b = ();

return @ret;
}

use Data::Dumper;

print Dumper x();


>   
>   
>   
> Struppi.  

Hi,  
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:  
~~~perl
  
.  
.  
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.