À la base, l'extension de fichier que vous utilisez ne fait aucune différence quant à la façon dont perl
interprète ces fichiers.
Toutefois, la mise en modules, en .pm
fichiers en suivant une certaine structure de répertoire qui suit le nom de ce paquet fournit une commodité. Donc, si vous avez un module d' Example::Plot::FourD
et vous mettre dans un répertoire Example/Plot/FourD.pm
dans un chemin d'accès dans votre @INC
, alors use
et require
va faire la bonne chose quand il est donné le nom du package en use Example::Plot::FourD
.
Le fichier doit retourner vrai que la dernière déclaration pour indiquer la réussite de l'exécution de tout code d'initialisation, de sorte qu'il est de coutume à la fin d'un tel fichier avec 1;
sauf si vous êtes sûr que ça va retourner vrai sinon. Mais c'est juste pour mieux mettre l' 1;
, dans le cas où vous ajoutez d'autres états.
Si EXPR
est un mot nu, l' require
suppose un ".h" extension et remplace "::" avec des "/" dans le nom de fichier pour vous, pour le rendre facile pour charger des modules standard. Cette forme de chargement de modules ne risque pas de modifier votre espace de noms.
Tous use
n'est de deviner le nom de fichier le nom du package fourni, require
dans un BEGIN
bloc et invoquer import
sur le paquet. Rien ne vous empêche de ne pas utiliser use
, mais en prenant ces étapes manuellement.
Par exemple, ci-dessous j'ai mis l' Example::Plot::FourD
package dans un fichier appelé" t.pl
, chargés dans un script dans le fichier s.pl
.
C:\Temp> cat t.pl
package Example::Plot::FourD;
use strict; use warnings;
sub new { bless {} => shift }
sub something { print "something\n" }
"Example::Plot::FourD"
C:\Temp> cat s.pl
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
Cet exemple montre que le module fichiers n'ont pas de fin en 1
, aucune valeur n'.