Au fond, l'extension de fichier que vous utilisez ne fait aucune différence quant à l' perl
interprétation de ces fichiers.
Cependant, placer des modules dans des .pm
fichiers suivant une certaine structure de répertoires qui suit le nom du package est pratique. Donc, si vous avez un module Example::Plot::FourD
et que vous le placez dans un répertoire Example/Plot/FourD.pm
dans un chemin dans votre @INC
, alors use
et require
fera la bonne chose quand on lui donnera le nom du package comme dans use Example::Plot::FourD
.
Le fichier doit retourner true comme dernière instruction pour indiquer l'exécution réussie de tout code d'initialisation, il est donc habituel de terminer un tel fichier avec à 1;
moins que vous ne soyez sûr qu'il retournera true autrement. Mais il vaut mieux simplement mettre le 1;
, au cas où vous ajouteriez plus de déclarations.
Si EXPR
est un mot nu, le require
prend une extension ".pm" et remplace "::" par "/" dans le nom de fichier pour vous, pour faciliter le chargement des modules standard. Cette forme de chargement de modules ne risque pas d'altérer votre espace de noms.
Tout ce qu'il use
fait est de trouver le nom de fichier à partir du nom du package fourni, require
dans un BEGIN
bloc et de l'invoquer import
sur le package. Rien ne vous empêche de ne pas utiliser use
mais de suivre ces étapes manuellement.
Par exemple, ci-dessous, j'ai mis le Example::Plot::FourD
package dans un fichier appelé t.pl
, je l'ai chargé dans un script dans un 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
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
Cet exemple montre que les fichiers de module n'ont pas à se terminer par 1
, toute valeur vraie fera l'affaire.
1
n'a pas d'importance. Cela peut être2
, cela peut être"foo"
, cela peut être["a", "list"]
. Ce qui compte, c'est que ce n'est pas le cas0
, ou toute autre chose qui est évaluée comme fausse ouuse
qui échouerait.