Struppi: Code referenzieren

Beitrag lesen

bin mal wieder über diese Dinge gestolpert, hoppla, das ist mir nicht ganz klar, 2 Varianten:

Nein! Das sind keine zwei Varianten, sondern zwei völlig unterschiedliche Dinge.

[code lang=perl]

Struktur für Menu und Eingangsseite

my %menu = (
    1 => ['Html', 'Inhalte erstellen und bearbeiten', &html],

Hier rufst du die Funktion html auf und weist dem 3. Arraywert den Wert zu, den die Funktion zurück gibt.

2 => ['Html', 'Inhalte erstellen und bearbeiten', &html],

und hier weist du dem dritten Wert die Referenz auf die Funktion zu.

Aufruf der Funktionen

#1
print $menu{1}->[2]

Das ist nicht der Aufruf der Funktion, sondern der Rückgabewert.

#2
print $menu{2}->[2]->();

Was ist da jetzt der Unterschied, spielt die Perlversion eine Rolle? Auf meiner Kiste ist 5.6.1, da geht Beides.

"Gehen" tut natürlich beides, es ist nur etwas völlig unterschiedliches.

Struppi.