84 votes

En Perl, quelle est la différence entre un .h (module Perl) et .pl (script Perl) fichier?

Quelle est la Différence entre .pm (module Perl) et .pl (script Perl) fichier?

Merci de me dire aussi pourquoi nous revenons 1 à partir d'un fichier. Si le retour 2 ou quoi que ce soit d'autre, c'est de ne pas générer d'erreur, alors pourquoi ne nous revenons 1 de module Perl?

75voto

Sinan Ünür Points 76179

À 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'.

-2voto

Igor Oks Points 9737

Un .pl est un simple script.

Dans .h (Module Perl), vous avez les fonctions que vous pouvez utiliser à partir d'autres scripts Perl:

Un module Perl est lui-même un morceau de code Perl qui peut être utilisé par un programme Perl ou par d'autres modules Perl. Il est conceptuellement similaire à C de bibliothèque de liens, ou d'une classe C++.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X