Wie kann ich eine Referenz auf eine Perl-Subroutine nehmen? Eine Unterroutine (z. B. eine Prozedur oder ein Unterprogramm) ist ein Teil des Codes innerhalb eines größeren Programms, der eine bestimmte Aufgabe ausführt und relativ unabhängig von dem verbleibenden Code sein kann. Die Syntax vieler Programmiersprachen umfasst die Unterstützung für das Erstellen eigenständiger Unterprogramme sowie für das Aufrufen und Zurückkehren von ihnen. Sie sind in vielerlei Hinsicht ähnlich wie Funktionen, haben aber normalerweise Nebenwirkungen außerhalb des einfachen "Rückgabewerts", der die Rückgabe bewirkt.

8

Ich habe Probleme herauszufinden, wie man eine Subroutine in einer externen Moduldatei referenziert. Gerade jetzt mache ich das:

Externe Datei

%Vor%

Haupt

%Vor%

aber dieses Ergebnis in einen Fehler: String ("1") kann nicht als Subroutinenreferenz verwendet werden, während "strict refs" verwendet wird

    
Pmarcoen 06.04.2010, 13:48
quelle

1 Antwort

23

Wie in perlmodlib erwähnt, sollten Sie den Namen Ihres Moduls mit einem Großbuchstaben beginnen:

  

Perl reserviert informell Kleinbuchstaben Modulnamen für 'Pragma' Module wie integer und strict . Andere Module beginnen normalerweise mit einem Großbuchstaben und verwenden einen gemischten Fall ohne Unterstriche (müssen kurz und tragbar sein).

Eine Möglichkeit, eine in einem anderen Paket definierte Untergruppe aufzurufen, besteht darin, den Namen dieser Untereinheit beim Aufruf vollständig zu qualifizieren:

%Vor%

Wenn Sie nur einen Verweis auf printScreen haben möchten, greifen Sie mit dem Backslash-Operator

darauf zu %Vor%

und rufe es mit einem

auf %Vor%

Sie könnten in Ihrem aktuellen Paket einen Alias ​​ erstellen:

%Vor%

Überspringen Sie die Klammern (notwendig, weil die Unterkomponente im aktuellen Paket zur Kompilierzeit nicht bekannt war), indem Sie Folgendes schreiben:

%Vor%

Das Modul Exporter kann diese Aufbewahrung für Sie übernehmen:

Einstellungen Allgemein.pm:

%Vor%

main:

%Vor%     
Greg Bacon 06.04.2010, 13:53
quelle