Thread Funktion mit mehr als zwei Rückgabewerte - möglich?
(5 answers)
Opened by HoHoHo at 2013-12-10 20:56
Ja, das funktioniert nicht, denn es kommt dabei nur ein großer Array zurück und perl weiß nicht, welche Elemente aus dem ersten und welche aus dem anderen Stammen.
Lösung: Gib Referenzen auf Arrays zurück und dereferenziere sie nach Bedarf. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/perl sub foo { my $a = "a"; my @b = ("b"); my @c = ("c"); return ($a, \@b, \@c); } my ($a, $b, $c) = foo; print "\@c "; print @$c; print "\n"; print "\@b "; print @$b; print "\n"; Wenn Du willst, kannst Du sie auch vor dem Verarbeiten wieder in Arrays verwandeln: und dann normal mit @b und @c weiterarbeiten. Gaaaanz sauber wäre dabei @{$b}, um vollkommen klar zu machen, dass $b die Variable ist. Wenn Du zum Beispiel einen hash of hashes hast, ist das nötig und sinnvoll: Code (perl): (dl
)
my @array = @{ $hash{'array'} }; |