Perl Hash der Unterfunktionen

7

Ich möchte einen Hash haben, der Verweise auf Unterfunktionen enthält, wo ich diese Funktionen abhängig von einer benutzerdefinierten Variable aufrufen kann. Ich werde versuchen, ein vereinfachtes Beispiel dafür zu geben, was ich zu tun versuche.

%Vor%

Dabei wären setup_vim() und setup_emacs() später in meiner Datei definierte Unterfunktionen und $editor ist eine benutzerdefinierte Variable (zB vim oder emacs). Ist das möglich? Ich kann es nicht funktionieren lassen oder gute Informationen zu dem Thema finden. Danke.

(Hinweis: Ich habe es jetzt als funktionierenden Switch implementiert, aber ich denke, ein Hash wie der oben genannte würde das Hinzufügen neuer Einträge zu meinem vorhandenen Code erleichtern)

    
Chris R 04.02.2011, 01:54
quelle

2 Antworten

16

Hier ist die Syntax.

%Vor%

Beachten Sie, dass Sie Funktionen direkt mit

erstellen können %Vor%

Und wenn Sie mit Closures vertraut sind, unterstützt Perl vollständige Closures für lexikalisch deklarierte Variablen, die Sie mit my.

ausführen können     
btilly 04.02.2011, 02:01
quelle
3

Sie müssen einen Verweis auf die Subroutine übergeben, die Sie in den Hash aufrufen möchten.

Hier ist ein Beispiel:

%Vor%

Mit \ & amp; myFunc erhalten Sie die Referenzpunkte der Funktion. Wichtig ist, das () wegzulassen. Andernfalls würden Sie einen Verweis auf den Rückgabewert der Funktion durchlaufen.

Wenn Sie die Funktion als Referenz aufrufen, müssen Sie sie mit der - & gt; Betreiber.

    
ghandi 04.02.2011 02:02
quelle

Tags und Links