Mahlzeit!
Astrid <
astri...@gmail.com> wrote:
> Habe ein sub, das 4 Arrays erwartet:
>
> sub mysub {
> my @x = @{$_[0]};
> my @y= @{$_[1]};
> my @mini= @{$_[2]};
> my @maxi= @{$_[3]};
> rest vom sub;
> }
Einspruch: Das sub erwartet 4 Array-*Referenzen*, nicht 4 Arrays.
(4 Arrays gingen auch nicht, weil das zu einem Array zusammengematscht
würde.)
> Urspruenglich hatte ich da auch 4 einzelne Arrays, die mit z.B.
> my (@feld,@feld2,@feld3@feld4) definiert waren.
> Inzwischen ist meine Datenstruktur leider kompilzierter geworden, sodass
> einige arrays in einem hash stecken gefuellt mit
[...]
> und andere sogar noch komplexer in einem array, das hashes enthaelt, die
> wiederrum arrays enthalten, gefuellt mit
[...]
> Wie kann ich diese Konstrukte an das sub uebergeben, so dass
> sie im sub als array ankommen?
Wie gesagt, willst Du eigentlich Array-*Referenzen* übergeben.
Da in Deinem Hash bzw. Array bereits Referenzen stecken, brauchst Du
nichts weiter zu tun, als die direkt zu übergeben, z.B. so:
$result = &mysub( $myhash1{mykey}, $myhash4[4722]->{var1},
$myhash2{mykey}, $myhash3{mykey} );
Gruß
Christian
PS: Wenn $myhash4 jetzt keine HashRef mehr ist, sondern eine ArrayRef,
sollte die Variable umbenannt werden, das ist sonst fies ;-)
--
sub _{print"\n"}_;for(;$s<9;++$s){$_='1E2018201E00001E2018201E00001E2018201'
.'E002020001C2222221400005CA2A2A27C02001C2222221C20003E040202201F2422221C00'
.'242A2A2A12002020001C2222221F20001C2A2A2A0C';while(s;(..);;){printf'%c',hex
$1&1<<$s?40:32}_}$_=':::Christian Garbs:<
mi...@cgarbs.de>',y;:;\t;;print;_;_