Latest web development tutorials

Perl-Pakete und Module

Perl Jedes Paket hat eine separate Symboltabelle Definition Syntax:

package mypack;

Diese Aussage ein Paketmypack im Namen aller Variablen und Subroutinen nachfolgend definiert werden gespeichert in der Symboltabelle , die mit dem Paket, das Paket, bis er trifft eine andere Aussage bisher genannt definiert.

Jede Symboltabelle einen eigenen Satz von Variablen hat, Subroutinen, die jeweils Gruppenname ist nicht relevant, so können Sie den gleichen Variablennamen in verschiedenen Paketen verwenden, die unterschiedliche Variablen darstellen.

Der Zugang von einem Paket zu einem anderen Paket variabel, können Sie den "Paketnamen + Doppelpunkt (: :) + Variablenname" angeben Ansatz.

Speichern von Variablen und Subroutinennamen Standardsymboltabelle mit dem Paket zugeordnet istHaupt verknüpft genannt.Wenn das Programm in anderen Paketen definiert ist, wenn Sie zurück zu mit der Standard-Symboltabelle wechseln möchten, können Sie das Hauptpaket neu zuweisen:

package main;

Somit wird das nächste Programm, als ob nie Pakete, Variablen und Subroutinen-Namen wie üblich Speicher definiert.

Das folgende Beispiel-Datei hat Haupt- und Foo-Paket.__PACKAGE__ Spezielle Variable für die Ausgabe Paketnamen:

#!/usr/bin/perl

#  main 包
$i = 1; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package Foo;
#  Foo 包
$i = 10; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package main;
# 重新指定 main 包
$i = 100; 
print "包名 : " , __PACKAGE__ , " $i\n"; 
print "包名: " , __PACKAGE__ ,  " $Foo::i\n"; 

1;

Das obige Programm, das Ausgabe ist:

包名 : main 1
包名 : Foo 10
包名 : main 100
包名: main 10

BEGIN und END-Module

Perl Sprache bietet zwei Schlüsselwörter: BEGIN, END. Sie können eine separate Sammlung von Skripten, die, bevor das Programm läuft oder Körper ausführen nach dem Laufen.

Die Syntax ist wie folgt:

BEGIN { ... }
END { ... }
BEGIN { ... }
END { ... }
  • JederBEGIN Block , aber vor anderen Anweisungen nach dem Perl - Skript geladen und kompiliert ausgeführt ausgeführt.

  • JederEND Block von Anweisungen ausgeführt , bevor der Interpreter beendet.

  • BEGIN und END- Block ist besonders nützlich , wenn Sie ein Perl - Modul erstellen.

Wenn Sie nicht verstehen, groß, können wir Instanzen finden Sie unter:

#!/usr/bin/perl

package Foo;
print "Begin 和 Block 实例\n";

BEGIN { 
    print "这是 BEGIN 语句块\n" 
}

END { 
    print "这是 END 语句块\n" 
}

1;

Das obige Programm, das Ausgabe ist:

这是 BEGIN 语句块
Begin 和 Block 实例
这是 END 语句块

Was ist ein Perl-Modul?

Perl5 mit Perl-Paket, ein Modul zu erstellen.

Perl - Modul ist eine wiederverwendbare Verpackung, den Modulnamen und das gleiche Paket Name, Dateierweiterung für.pm definiert.

Im Folgenden ein Modul Foo.pm, Code wie folgt definieren:

#!/usr/bin/perl

package Foo;
sub bar { 
   print "Hello $_[0]\n" 
}

sub blat { 
   print "World $_[0]\n" 
}
1;

Perl-Module zu den folgenden zu beachten:

  • Funktion undVerwendung wird ein Lademodul benötigen.

  • @INC Perl ist eine spezielle integrierte Array , das der Verzeichnispfad liegt an der Stelle der Bibliotheksroutinen enthält.

  • erfordern und die VerwendungFunktion aufruft Funktioneval, um Code auszuführen.

  • End1; Ausführung liefert TRUE, dies ist ein Muss, sonst wird es einen Fehler zurückgibt.


Erfordern die Verwendung und Funktion

Modul kann durch dieerfordern Funktion aufgerufen werden , wie folgt:

#!/usr/bin/perl

require Foo;

Foo::bar( "a" );
Foo::blat( "b" );

Sie können auch die Funktion verwenden, um zu verweisen:

<pre>
#!/usr/bin/perl

use Foo;

bar( "a" );
blat( "b" );

Wir weisen auf die Notwendigkeit, einen Verweis auf den Paketnamen angegeben Funktion benötigen, und müssen nicht verwendet werden, der Hauptunterschied zwischen den beiden ist:

  • 1, erfordern für Perl-Modul oder ein Programm zu laden (kann .pm Suffix weggelassen werden, aber es muss .pl)
  • 2, wird Perl use-Anweisung kompiliert, wenn eingeführt, Laufzeit benötigen wird eingeführt
  • 3, Perl die Einführung des Moduls verwendet werden, sondern auch die Einführung des Submoduls Moduls. Und es kann nicht die Einführung erfordern zur Wieder Aussage
  • 4, USE ist innen an der aktuellen Standard-@INC zu suchen, wenn das Modul nicht in den Worten ist @INC mit USE nicht eingeführt wird, kann jedoch einen bestimmten Pfad erfordern
  • 5, USE verwiesen Modul, wenn der Modulname enthält :: Doppelpunkt, verdoppelt sich die Doppelpunkt als Pfadtrennzeichen, das Äquivalent der Unix / oder unter Windows \. Wie zum Beispiel:

    use MyDirectory::MyModule

Sie können indem Sie die folgende Anweisung verwenden Module eine Liste mit Symbolen aus dem Modul zu exportieren:

require Exporter;
@ISA = qw(Exporter);

@EXPORT Array enthält Standard Variablen und Funktionen aus dem Namen ableiten:

package Module;

require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(bar blat);  # 默认导出的符号

sub bar { print "Hello $_[0]\n" }
sub blat { print "World $_[0]\n" }
sub splat { print "Not $_[0]\n" }  # Not exported!

1;

Erstellen Sie ein Perl-Modul

Sie können ganz einfach ein Perl-Modul Perl-Distribution kommt mit einem Werkzeug h2xs erstellen.

Sie können in der Befehlszeile Modus h2xs in seiner Parameterliste sehen geben.

h2xs Syntax:

$ h2xs -AX -n  ModuleName

Parameter Beschreibung:

  • -A Ignoriert Autoload - Mechanismus

  • -X Ignoriert XS Element

  • -n Gibt den Namen der Erweiterung

Zum Beispiel, wenn Ihr ModulPerson.pm Datei, verwenden Sie den folgenden Befehl ein :

$ h2xs -AX -n Person

Das obige Programm ausgeben wird:

Writing Person/lib/Person.pm
Writing Person/Makefile.PL
Writing Person/README
Writing Person/t/Person.t
Writing Person/Changes
Writing Person/MANIFEST

Person unter dem Verzeichnis, das Sie die neu hinzugefügten Dateien und Verzeichnisse Erklärung sehen können:

  • Readme: Diese Datei enthält Informationen zur Installation, Modulabhängigkeiten, Copyright-Informationen und so weiter.

  • Änderungen: Diese Änderung Protokolldatei als Ihr Projekt (Changelog-Datei).

  • Makefile.PL: Dies ist der Standard-Builder Perl Makefile. Verwendet eine Makefile.PL-Datei zu erstellen, das Modul zu kompilieren.

  • MANIFEST: Diese Datei wird verwendet, um automatisch tar.gz Modultyp Version Verteilung aufzubauen. So können Sie Ihr CPAN-Modul setzen können, um auf andere veröffentlicht oder verteilt bekommen. Es enthält eine Liste aller Dateien in diesem Projekt.

  • Person.pm: Dies ist das Hauptmodul-Datei, die den Code für Ihre Mod_perl Handler enthält (Handler-Code).

  • Person.t: für dieses Modul einige Testskripts. In der Standardeinstellung, es ist nur die Überprüfung-Modul geladen, können Sie einige neue Testeinheit hinzuzufügen.

  • t /: Testdatei

  • lib /: tatsächliche Quelle Speicherverzeichnis

Sie können tar (Linux auf) Befehl an den oben genannten Verzeichnis verpackt als Person.tar.gz verwenden.


Installieren Sie Perl-Module

Wir können nur die folgenden SchrittePerson.tar.gz komprimierte Datei um die Installation zu entpacken, ausführen:

tar xvfz Person.tar.gz
cd Person
perl Makefile.PL
make
make install

Erster Lauf "perl Makefile.PL" im aktuellen Verzeichnis Makefile erzeugt;

"make" Dann kompilieren und erstellen Sie die gewünschte Bibliotheksdatei;

Gefolgt von Test "Test machen" kompilieren die Ergebnisse richtig sind, die letzten Lauf "make install" die Bibliotheksdateien in das System-Verzeichnis zu installieren, damit das gesamte Übersetzungsvorgang beendet wird.