Thread Array in Hash ?
(3 answers)
Opened by jan99 at 2011-06-14 08:42
Edit: Bin zu langsam...ersten Satz ignorieren. ;)
qw erzeugt eine Liste - [qw/1 2 3/] geht also ebenfalls. Der Hintergrund ist, dass sowohl in Arrays, als auch in Hashes, direkt nur Skalare gespeichert werden können. Um einem Element trotzdem einen Array zuzuweisen, speichert man einfach eine Referenz auf einen bestimmten Speicherplatz, in dem dann der Array steht. Z.B.: Code (perl): (dl
)
1 2 3 4 5 @array = qw/a b c/; $arrayref = \@array; #\ erzeugt Referenzen auf das was danach kommt print "$arrayref\n"; #Da steht dann sowas wie ARRAY(0xae7d48) print @{$arrayref},"\n"; #Dereferenziert wieder %hash = (x => 1; y => $arrayref); Da dieses Beispiel erstens umständlich ist, und außerdem nachträgliche Änderungen in @array auch in deinem Hash auftauchen würden, da man genau auf diesen Array verweist, was aber meistens ungewollt ist, bedient man sich der eckigen Klammern, die in einem Schritt aus einer Liste eine Arraysreferenz erzeugen. Last edited: 2011-06-14 09:13:01 +0200 (CEST) |