Chaque package en Perl possède une table de symboles distincte et la syntaxe de définition est la suivante :
emballer monpack ;
Cette instruction définit un package nommé mypack . Les noms de toutes les variables et sous-programmes définis par la suite sont stockés dans la table des symboles associée au package jusqu'à ce qu'une autre instruction package soit rencontrée.
Chaque table de symboles possède son propre ensemble de noms de variables et de sous-programmes. Chaque ensemble de noms n'est pas lié, de sorte que le même nom de variable peut être utilisé dans différents packages pour représenter différentes variables.
Pour accéder aux variables d'un autre package à partir d'un package, vous pouvez le spécifier par "nom du package + double deux-points (::) + nom de la variable".
La table des symboles par défaut qui stocke les noms des variables et des sous-programmes est associée au package nommé main . Si d'autres packages sont définis dans le programme et que vous souhaitez revenir à l'utilisation de la table des symboles par défaut, vous pouvez re-spécifier le package principal :paquet principal ;
De cette façon, le programme suivant agira comme si le package n'avait jamais été défini et les noms des variables et des sous-programmes sont stockés comme d'habitude.
Les fichiers de l'exemple suivant sont des packages main et Foo. La variable spéciale __PACKAGE__ est utilisée pour afficher le nom du package :
En exécutant le programme ci-dessus, le résultat de sortie est :
Nom du package : main 1 Nom du package : Foo 10 Nom du package : main 100 Nom du package : main 10
Le langage Perl fournit deux mots-clés : BEGIN et END. Ils peuvent chacun contenir un ensemble de scripts à exécuter avant ou après l'exécution du corps du programme.
Le format de syntaxe est le suivant :
DÉBUT { ... }FIN { ... }BEGIN { ... }FIN { ... }
Chaque module BEGIN est exécuté après le chargement et la compilation du script Perl, mais avant l'exécution des autres instructions.
Chaque bloc d'instruction END est exécuté avant la sortie de l'interpréteur.
Les blocs d'instructions BEGIN et END sont particulièrement utiles lors de la création de modules Perl.
Si vous ne comprenez toujours pas, nous pouvons regarder un exemple :
En exécutant le programme ci-dessus, le résultat de sortie est :
Il s'agit du bloc d'instructions BEGIN. Il s'agit du bloc d'instructions END.
En Perl5, les packages Perl sont utilisés pour créer des modules.
Un module Perl est un package réutilisable. Le nom du module est le même que le nom du package et le suffixe du fichier défini est .pm .
Ci-dessous nous définissons un module Foo.pm, le code est le suivant :
Il y a quelques points à noter à propos des modules en Perl :
Les fonctions requises et utilisées chargeront un module.
@INC est un tableau spécial intégré à Perl qui contient le chemin du répertoire vers l'emplacement des routines de la bibliothèque.
Les fonctions require et use appellent la fonction eval pour exécuter du code.
1 à la fin ; l’exécution renvoie TRUE, ce qui est obligatoire, sinon une erreur est renvoyée.
Les modules peuvent être appelés via la fonction require , comme indiqué ci-dessous :
Il peut également être référencé via la fonction use :
Nous avons remarqué que la référence require doit utiliser le nom du package pour spécifier la fonction, mais pas la référence use. La principale différence entre les deux est la suivante :
1. require est utilisé pour charger un module ou un programme Perl (le suffixe .pm peut être omis, mais .pl doit être présent)
2. L'instruction Perl use est introduite au moment de la compilation et l'instruction require est introduite au moment de l'exécution.
3. Lorsque l'utilisation de Perl introduit un module, elle introduit également le sous-module du module. Cependant, require ne peut pas être introduit et doit être redéclaré
4. USE est recherché dans le @INC par défaut actuel. Une fois que le module n'est pas dans @INC, il ne peut pas être introduit en utilisant USE, mais require peut spécifier le chemin.
5. Lorsque USE fait référence à un module, si le nom du module contient un :: double deux-points, le double deux-points sera utilisé comme séparateur de chemin, ce qui équivaut à / sous Unix ou sous Windows. comme:
utiliser MonRépertoire ::MonModule
Les symboles de liste peuvent être exportés depuis le module use en ajoutant l'instruction suivante :
require Exportateur;@ISA = qw(Exportateur);
Le tableau @EXPORT contient les noms des variables et fonctions exportées par défaut :
package Module;require Exporter;@ISA = qw(Exporter);@EXPORT = qw(bar blat); #Symboles exportés par défaut sub bar { print "Bonjour $_[0]n" }sub blat { print "World $ _ [0]n" }sub splat { print "Not $_[0]n" } # Non exporté !1;
Il est facile de créer un module Perl grâce à l'outil h2xs fourni avec la distribution Perl.
Vous pouvez taper h2xs en mode ligne de commande pour voir sa liste de paramètres.
Format de syntaxe h2xs :
$ h2xs -AX -n NomModule
Description du paramètre :
-A ignore le mécanisme de chargement automatique
-X ignore les éléments XS
-n spécifie le nom du module d'extension
Par exemple, si votre module se trouve dans le fichier Person.pm , utilisez la commande suivante :
$ h2xs -AX -n Personne
L'exécution du programme ci-dessus affichera :
Writing Person/lib/Person.pmWriting Person/Makefile.PLWriting Person/READMEWriting Person/t/Person.tWriting Person/ChangesWriting Person/MANIFEST
Sous le répertoire Personne, vous pouvez voir les répertoires nouvellement ajoutés et les descriptions de fichiers :
README : ce fichier contient des informations d'installation, des dépendances de modules, des informations de droits d'auteur, etc.
Modifications : ce fichier sert de fichier journal des modifications pour votre projet.
Makefile.PL : Il s'agit du constructeur Perl Makefile standard. Utilisé pour créer un fichier Makefile.PL pour compiler le module.
MANIFESTE : ce fichier est utilisé pour construire automatiquement la distribution des versions du module de type tar.gz. De cette façon, vous pouvez apporter votre module au CPAN et le publier ou le distribuer à d'autres. Il contient une liste de tous les fichiers que vous avez dans ce projet.
Person.pm : Il s'agit du fichier de module principal qui contient votre code de gestionnaire mod_perl.
Person.t : Quelques scripts de test pour ce module. Par défaut, il vérifie simplement le chargement du module, vous pouvez ajouter de nouvelles unités de test.
t/ : fichier de test
lib/ : répertoire où le code source réel est stocké
Vous pouvez utiliser la commande tar (sous Linux) pour regrouper le répertoire ci-dessus dans Person.tar.gz.
Nous pouvons décompresser et installer le fichier Person.tar.gz que nous venons de compresser. Les étapes sont les suivantes :
tar xvfz Person.tar.gzcd Personperl Makefile.PLmakemake install
Exécutez d'abord "perl Makefile.PL" pour générer le Makefile dans le répertoire courant ;
Exécutez ensuite « make » pour compiler et créer les fichiers de bibliothèque requis ;
Utilisez ensuite « make test » pour tester si le résultat de la compilation est correct ; enfin, exécutez « make install » pour installer le fichier de bibliothèque dans le répertoire système, et l'ensemble du processus de compilation se termine.