Au fond, l'extension de fichier que vous utilisez ne fait aucune différence quant à l' perlinterprétation de ces fichiers.
Cependant, placer des modules dans des .pmfichiers suivant une certaine structure de répertoires qui suit le nom du package est pratique. Donc, si vous avez un module Example::Plot::FourDet que vous le placez dans un répertoire Example/Plot/FourD.pmdans un chemin dans votre @INC, alors useet requirefera 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 EXPRest un mot nu, le requireprend 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 usefait est de trouver le nom de fichier à partir du nom du package fourni, requiredans un BEGINbloc et de l'invoquer importsur le package. Rien ne vous empêche de ne pas utiliser usemais de suivre ces étapes manuellement.
Par exemple, ci-dessous, j'ai mis le Example::Plot::FourDpackage 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.
1n'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 ouusequi échouerait.