[Dresden-pm] Array-Verweis dereferenzieren?

Kristian Rink afterimage at gmx.net
Die Feb 8 04:43:18 PST 2005


Salut alle;

eine reichlich triviale Frage, die mir trotz allem mehr Kopfzerbrechen
bereitet, als ich das anfänglich erwartet hätte. Situation: Ich hab eine
relativ sperrige Datenstruktur, in der ich mein Website-Navigations-Menü
mit mir herumtrage. Das Dingens ist im Wesentlichen ein Array voller
Hash-Referenzen (für jeden Menü-Punkt einer), und innerhalb dieser
Hashs gibt's für Untermenüs wiederum ein Array voller Hash-Referenzen.
Ob das übermäßig clever/performant/stabil/whatever ist, sei mal
dahingestellt. Mit dem Untermenü-Array funktioniert etwas der Art

print $menuitem->{"submenu"};

und gibt mir die korrekte zahl von Elementen im Untermenü aus. Was aber
nicht klappt, ist die Verwendung der ganzen Sache innerhalb von "for",
also (was naheliegend ist)

[I] for my $item (@{$menuitem->{"submenu"}}) { blablurb; }

ebensowenig wie (was ich eigentlich auch nicht vermutet hatte)

[II] for my $item ($menuitem->{"submenu"}) { blablurb; },

wobei ich in zweiterem Falle $item erwartungsgemäß mit der Anzahl der
Elemente in dem Array füttere.

Frage aber nun: Was habe ich übersehen?  Und, wichtiger: Warum
funktioniert [I] nicht? Kann mich jemand erleuchten?

Danke und tschö,
Kris