Thread mehrere Referenzen von arrays zurückgeben (26 answers)
Opened by Gustl at 2013-06-25 17:29

hlubenow
 2013-06-25 22:34
#168578 #168578
User since
2009-02-22
876 Artikel
BenutzerIn
[default_avatar]
2013-06-25T15:29:47 Gustl
Code (perl): (dl )
(@array1, @array2, @array3, @array4) = reverse_all_arrays(\@array1, \@array2, \@array3, \@array4);

Ich glaube, das geht nicht, weil Perl an Funktionen übergebene und aus Funktionen in dieser Weise zurückgegebene Arrays einfach plattdrückt.
Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use warnings;
use strict;

sub test {
    my @c = qw(a b c d);
    my @d = (1 .. 4);
    return (@c, @d);
}

my @a;
my @b;

(@a, @b) = &test();

foreach my $i (@a) {
    print "$i\n";
}

Hier sind beide Arrays @c und @d zusammen in @a gelandet, @b erhält dann nichts. Das geht also nicht.

Wenn Du das getrennt haben willst, mußt Du Referenzen auf die Arrays in der Funktion zurückgeben. Ebenso wie Du der Funktion Referenzen auf die Arrays übergeben hattest.

Jetzt fragt sich nur noch, ob es möglich ist, Referenzen auf lokale Arrays aus einer Funktion zurückzugeben, auch wenn die Funktion dadurch beendet wird und die Arrays als lokale Variablen theoretisch gelöscht werden müßten. C würde bestimmt meckern, kann gut sein, daß Perl das macht.

View full thread mehrere Referenzen von arrays zurückgeben