Jedes Paket in Perl verfügt über eine separate Symboltabelle und die Definitionssyntax lautet:
Paket mypack;
Diese Anweisung definiert ein Paket mit dem Namen mypack . Die Namen aller danach definierten Variablen und Unterroutinen werden in der dem Paket zugeordneten Symboltabelle gespeichert, bis eine andere Paketanweisung auftritt.
Jede Symboltabelle verfügt über einen eigenen Satz von Variablen- und Unterprogrammnamen. Jeder Namenssatz steht in keinem Zusammenhang, sodass derselbe Variablenname in verschiedenen Paketen zur Darstellung verschiedener Variablen verwendet werden kann.
Um von einem Paket aus auf die Variablen eines anderen Pakets zuzugreifen, können Sie es durch „Paketname + Doppelpunkt (::) + Variablenname“ angeben.
Die Standardsymboltabelle, in der die Namen von Variablen und Unterprogrammen gespeichert sind, ist dem Paket mit dem Namen main zugeordnet. Wenn andere Pakete im Programm definiert sind und Sie wieder zur Verwendung der Standardsymboltabelle wechseln möchten, können Sie das Hauptpaket neu angeben:Paket main;
Auf diese Weise verhält sich das folgende Programm so, als ob das Paket nie definiert worden wäre, und die Namen von Variablen und Unterprogrammen werden wie gewohnt gespeichert.
Die Dateien im folgenden Beispiel sind Haupt- und Foo-Pakete. Zur Ausgabe des Paketnamens wird die spezielle Variable __PACKAGE__ verwendet:
Wenn Sie das obige Programm ausführen, lautet das Ausgabeergebnis:
Paketname: main 1 Paketname: Foo 10 Paketname: main 100 Paketname: main 10
Die Perl-Sprache bietet zwei Schlüsselwörter: BEGIN und END. Sie können jeweils eine Reihe von Skripten enthalten, die vor oder nach der Ausführung des Programmhauptteils ausgeführt werden.
Das Syntaxformat ist wie folgt:
BEGIN { ... }END { ... }BEGIN { ... }END { ... }
Jedes BEGIN -Modul wird ausgeführt, nachdem das Perl-Skript geladen und kompiliert wurde, aber bevor andere Anweisungen ausgeführt werden.
Jeder END- Anweisungsblock wird ausgeführt, bevor der Interpreter beendet wird.
BEGIN- und END- Anweisungsblöcke sind besonders nützlich beim Erstellen von Perl-Modulen.
Wenn Sie es immer noch nicht verstehen, können wir uns ein Beispiel ansehen:
Wenn Sie das obige Programm ausführen, lautet das Ausgabeergebnis:
Dies ist der BEGIN-Anweisungsblock. Dies ist der END-Anweisungsblock.
In Perl5 werden Perl-Pakete zum Erstellen von Modulen verwendet.
Ein Perl-Modul ist ein wiederverwendbares Paket. Der Name des Moduls ist derselbe wie der Name des Pakets und das Suffix der definierten Datei ist .pm .
Im Folgenden definieren wir ein Modul Foo.pm. Der Code lautet wie folgt:
Bei Modulen in Perl gibt es einige Dinge zu beachten:
Die Funktionen require und use laden ein Modul.
@INC ist ein spezielles in Perl integriertes Array, das den Verzeichnispfad zum Speicherort der Bibliotheksroutinen enthält.
Die Funktionen „require“ und „use“ rufen die Funktion „eval“ auf, um Code auszuführen.
1 am Ende; die Ausführung gibt TRUE zurück, was erforderlich ist, andernfalls wird ein Fehler zurückgegeben.
Module können über die Funktion require aufgerufen werden, wie unten gezeigt:
Es kann auch über die use-Funktion referenziert werden:
Wir haben festgestellt, dass die Anforderungsreferenz den Paketnamen verwenden muss, um die Funktion anzugeben, die Verwendungsreferenz jedoch nicht. Der Hauptunterschied zwischen den beiden ist:
1. require wird zum Laden eines Moduls oder eines Perl-Programms verwendet (das Suffix .pm kann weggelassen werden, aber .pl muss vorhanden sein)
2. Die Perl-Use-Anweisung wird zur Kompilierungszeit und die Require-Anweisung zur Laufzeit eingeführt.
3. Wenn Perl ein Modul einführt, führt es auch das Untermodul des Moduls ein. require kann jedoch nicht eingeführt werden und muss neu deklariert werden
4. USE wird im aktuellen Standard-@INC gesucht. Sobald sich das Modul nicht in @INC befindet, kann es nicht mit USE eingeführt werden, aber erfordern kann den Pfad angeben.
5. Wenn sich USE auf ein Modul bezieht und der Modulname einen ::-Doppelpunkt enthält, wird der Doppelpunkt als Pfadtrennzeichen verwendet, was / unter Unix oder unter Windows entspricht. wie:
Verwenden Sie MyDirectory::MyModule
Listensymbole können aus dem Verwendungsmodul exportiert werden, indem die folgende Anweisung hinzugefügt wird:
require Exporter;@ISA = qw(Exporter);
Das @EXPORT-Array enthält die Namen der standardmäßig exportierten Variablen und Funktionen:
package Module;require Exporter;@ISA = qw(Exporter);@EXPORT = qw(bar blat); #Standard exportierte Symbole sub bar { print "Hallo $_[0]n" }sub blat { print "World $ _ [0]n" }sub splat { print "Not $_[0]n" } # Nicht exportiert!1;
Es ist einfach, ein Perl-Modul mit dem Tool h2xs zu erstellen, das in der Perl-Distribution enthalten ist.
Sie können h2xs im Befehlszeilenmodus eingeben, um die Parameterliste anzuzeigen.
h2xs-Syntaxformat:
$ h2xs -AX -n Modulname
Parameterbeschreibung:
-A ignoriert den Autoload-Mechanismus
-X ignoriert XS-Elemente
-n gibt den Namen des Erweiterungsmoduls an
Wenn sich Ihr Modul beispielsweise in der Datei Person.pm befindet, verwenden Sie den folgenden Befehl:
$ h2xs -AX -n Person
Wenn Sie das obige Programm ausführen, wird Folgendes ausgegeben:
Schreibende Person/lib/Person.pmWriting Person/Makefile.PLWriting Person/READMEWriting Person/t/Person.tWriting Person/ChangesWriting Person/MANIFEST
Unter dem Personenverzeichnis können Sie die neu hinzugefügten Verzeichnisse und Dateibeschreibungen sehen:
README: Diese Datei enthält einige Installationsinformationen, Modulabhängigkeiten, Copyright-Informationen usw.
Änderungen: Diese Datei dient als Änderungsprotokolldatei für Ihr Projekt.
Makefile.PL: Dies ist der Standard-Perl-Makefile-Konstruktor. Wird zum Erstellen einer Makefile.PL-Datei zum Kompilieren des Moduls verwendet.
MANIFEST: Diese Datei wird verwendet, um automatisch die Versionsverteilung des Moduls vom Typ tar.gz zu erstellen. Auf diese Weise können Sie Ihr Modul zum CPAN bringen und es veröffentlichen oder an andere verteilen. Es enthält eine Liste aller Dateien, die Sie in diesem Projekt haben.
Person.pm: Dies ist die Hauptmoduldatei, die Ihren mod_perl-Handlercode enthält.
Person.t: Einige Testskripte für dieses Modul. Standardmäßig wird nur die Modulladung überprüft. Sie können einige neue Testeinheiten hinzufügen.
t/: Testdatei
lib/: Verzeichnis, in dem der eigentliche Quellcode gespeichert ist
Sie können den Befehl tar (unter Linux) verwenden, um das obige Verzeichnis in Person.tar.gz zu packen.
Wir können die gerade komprimierte Datei Person.tar.gz dekomprimieren und installieren. Die Schritte sind wie folgt:
tar xvfz Person.tar.gzcd Personperl Makefile.PLmakemake installieren
Führen Sie zunächst „perl Makefile.PL“ aus, um das Makefile im aktuellen Verzeichnis zu generieren.
Führen Sie dann „make“ aus, um die erforderlichen Bibliotheksdateien zu kompilieren und zu erstellen.
Verwenden Sie dann „make test“, um zu testen, ob das Kompilierungsergebnis korrekt ist. Führen Sie abschließend „make install“ aus, um die Bibliotheksdatei im Systemverzeichnis zu installieren, und der gesamte Kompilierungsprozess ist beendet.