Latest web development tutorials

packages et des modules Perl

Perl Chaque paquet a une syntaxe de définition de la table de symbole distinct est:

package mypack;

Cette déclaration définit un package appelémypack au nom de toutes les variables et les sous - programmes définis ci - après sont stockées dans la table de symbole associé à l'emballage, le paquetjusqu'à ce qu'il rencontre une autre déclaration à ce jour.

Chaque table de symbole a son propre ensemble de variables, sous-programmes, chaque nom de groupe ne sont pas pertinentes, de sorte que vous pouvez utiliser le même nom de variable dans des emballages différents, qui représentent différentes variables.

Accès d'un package à un autre variable de package, vous pouvez spécifier le "nom du paquet + double deux points (:) + nom de la variable" approche.

les variables Mémorisation et les noms sous - programme table de symbole par défaut associé au package est appeléprincipal lié.Si le programme est défini dans d'autres packages, lorsque vous voulez revenir à l'aide de la table de symbole par défaut, vous pouvez réaffecter le paquet principal:

package main;

Ainsi, le prochain programme comme si jamais défini les paquets, les variables et les noms de sous-programmes que le stockage d'habitude.

Le fichier exemple suivant a package principal et Foo.__PACKAGE__ Variables spéciales pour les noms de paquet de sortie:

#!/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;

Le programme ci-dessus, le résultat est:

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

BEGIN et modules END

langage Perl fournit deux mots-clés: BEGIN, END. Ils peuvent être un ensemble distinct de scripts qui exécutent avant les courses du programme ou le corps après l'exécution.

La syntaxe est la suivante:

BEGIN { ... }
END { ... }
BEGIN { ... }
END { ... }
  • Chaque blocBEGIN mais exécuté avant les autres instructions exécutées après que le script Perl chargé et compilé.

  • Chaque blocEND des états exécuté avant l'interprète quitte.

  • BEGIN et bloc ENDest particulièrement utile lorsque vous créez un module Perl.

Si vous ne comprenez pas grand, nous pouvons voir des cas:

#!/usr/bin/perl

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

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

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

1;

Le programme ci-dessus, le résultat est:

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

Qu'est-ce qu'un module Perl?

Perl5 avec le paquet Perl pour créer un module.

module Perl est un ensemble réutilisable, le nom du module et le même nom de package, extension de fichier défini pour.pm.

Ci-dessous, nous définissons un Foo.pm du module, le code comme suit:

#!/usr/bin/perl

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

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

Perl modules concernant de noter ce qui suit:

  • Fonction et l'utilisation , il faudraun module de charge.

  • @INC Perl est un tableau spécial intégré qui contient le chemin d'accès à l'emplacement des routines de bibliothèque est.

  • exigent et utilisezla fonction appelle la fonctionevalpour exécuter du code.

  • Fin1, l' exécution retourne TRUE, c'est un must, sinon il renvoie une erreur.


Exiger l'utilisation et la fonction

Le module peut être invoqué par la fonctionrequire comme suit:

#!/usr/bin/perl

require Foo;

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

Vous pouvez également utiliser la fonction de se référer à:

<pre>
#!/usr/bin/perl

use Foo;

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

Nous notons la nécessité d'exiger une référence au nom spécifié fonction de package, et n'a pas besoin d'utiliser, la principale différence entre les deux est:

  • 1, exigent pour le chargement de module ou programme perl (suffixe .pm peut être omis, mais il doit y .pl)
  • 2, Perl utilisation déclaration est compilé lors de son introduction, nécessite l'exécution est introduit
  • 3, Perl utilise la mise en place du module, mais aussi la mise en place du module de sous-module. Et il ne peut pas exiger l'introduction de la re-déclaration
  • 4, l'utilisation est de regarder le @INC par défaut courant à l'intérieur, une fois que le module est pas dans les mots @INC avec USE ne soit pas introduite, mais peut nécessiter un chemin d'accès spécifié
  • 5, le module USE référencé, si le nom du module contient :: deux fois deux points, le côlon va doubler comme un séparateur de chemin, l'équivalent de l'Unix / ou sous Windows \. Tels que:

    use MyDirectory::MyModule

Vous pouvez exporter une liste de symboles du module en ajoutant l'instruction suivante à utiliser des modules:

require Exporter;
@ISA = qw(Exporter);

@EXPORT Matrice contient des variables et des fonctions dérivées du nom par défaut:

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;

Créer un module Perl

Vous pouvez facilement créer un module Perl distribution Perl est livré avec un outil h2xs.

Vous pouvez taper la ligne de commande h2xs mode regarder sa liste de paramètres.

syntaxe h2xs:

$ h2xs -AX -n  ModuleName

Description Paramètre:

  • -Un Mécanisme de autoload Ignoré

  • -X Ignoré élément XS

  • -n Indique le nom de l' extension

Par exemple, si votre fichierPerson.pm de module, utilisez la commande suivante:

$ h2xs -AX -n Person

La sortie programme de volonté ci-dessus:

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

Personne dans le répertoire, vous pouvez voir les répertoires nouvellement ajoutés et les fichiers Explication:

  • README: Ce fichier contient des informations sur l'installation, les dépendances du module, les informations de copyright, et ainsi de suite.

  • Changements: Ce fichier journal des modifications que votre projet (changelog) fichier.

  • Makefile.PL: Ceci est le constructeur Perl Makefile standard. Utilisé pour créer un fichier Makefile.PL pour compiler le module.

  • MANIFESTE: Ce fichier est utilisé pour construire automatiquement le type de la distribution de la version du module tar.gz. Donc, vous pouvez mettre votre module CPAN pour être publié ou distribué à d'autres. Il contient une liste de tous vos fichiers dans ce projet.

  • Person.pm: Ceci est le fichier de module principal qui contient le code pour votre gestionnaire de mod_perl (code de gestionnaire).

  • Person.t: pour ce module des scripts de test. Par défaut, il est juste module de contrôle chargé, vous pouvez ajouter une nouvelle unité de test.

  • fichier de test: t /

  • lib /: répertoire de stockage de source réelle

Vous pouvez utiliser tar commande (Linux) dans le répertoire ci-dessus emballés comme Person.tar.gz.


Installez des modules Perl

Nous pouvons simplementPerson.tar.gz fichier compressé pour décompresser l'installation, procédez comme suit:

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

Premier run "perl Makefile.PL" dans le répertoire courant généré Makefile;

Ensuite, exécutez "make" pour compiler et créer le fichier de bibliothèque nécessaire;

Suivi par "make test" test compiler les résultats sont corrects, le dernier run "make install" pour installer les fichiers de bibliothèque dans le répertoire système, mettant ainsi fin au processus de compilation entière.