Quelle est la différence entre les fichiers .pm
(module Perl) et .pl
(script Perl)?
Veuillez également me dire pourquoi nous revenons 1
du dossier. Si return 2 ou autre chose, cela ne génère aucune erreur, alors pourquoi revenons-nous 1
du module Perl?
perl
perl-module
user380979
la source
la source
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.Réponses:
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 moduleExample::Plot::FourD
et que vous le placez dans un répertoireExample/Plot/FourD.pm
dans un chemin dans votre@INC
, alorsuse
etrequire
fera la bonne chose quand on lui donnera le nom du package comme dansuse Example::Plot::FourD
.Tout ce qu'il
use
fait est de trouver le nom de fichier à partir du nom du package fourni,require
dans unBEGIN
bloc et de l'invoquerimport
sur le package. Rien ne vous empêche de ne pas utiliseruse
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 fichiers.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 les fichiers de module n'ont pas à se terminer par
1
, toute valeur vraie fera l'affaire.la source
Un .pl est un script unique.
Dans .pm ( module Perl ), vous avez des fonctions que vous pouvez utiliser à partir d'autres scripts Perl:
la source