Creer un module... [Perl] - Programmation
Marsh Posté le 18-03-2002 à 23:29:11
Suri a écrit a écrit : c possible de creer un module en perl avec ses ptites fonctions a soi dedans? (désolé fallait que je demande ) |
oui tu peux au moins rassembler des fonctions dans un fichier .pm en specifiant le nom du package. Mieux encore, tu fais une class en fait mais là regarde la doc ou inspire toi des .pm fournis
Marsh Posté le 20-03-2002 à 11:00:33
Faire un package (.pm) en Perl est super aisé, voici la structure de ton fichier .pm :
package Nom_Du_Module;
use vars qw(@ISA @EXPORT); # à utiliser par défaut
use Exporter; # idem
@ISA = qw (Exporter); # idem
@EXPORT = qw (Fonction1 Fonction2 Fonction3 );
Qq explications :
use vars qw(@ISA @EXPORT); : importe des vars d'environnement
use Exporter; : le package Exporter.pm contient une méthode d'importation de package déjà toute faite, il te suffit d'utiliser donc cette méthode (sans t'en soucier) pour que n'importe lequel de tes programmes puisse utiliser ton package
@EXPORT = qw (Fonction1 Fonction2 Fonction3 ); : dans la liste @EXPORT, tu y indiques le nom de toutes tes fonctions du package qui seront disponibles via un use Mon_Package. Si tu veux que certaines fonctions soient dispo via un require, il te faut rajouter une autre liste, @EXPORT_OK (de mémoire) en y indiquant les fonctions qui seront accessibles par ton require.
Enfin, toujours terminer ton fichier package par 1;.
Voici l'exemple du package Toto.pm :
package Toto;
require 5.6.1;
use strict;
use vars qw(@ISA @EXPORT);
use Exporter;
@ISA = qw (Exporter);
@EXPORT = qw (Pouet Truc Muche );
sub Pouet {
}
sub Truc {
}
sub Muche {
}
1;
Valà. Dans mon exemple, les 3 fonctions seront accessibles dans mon programme principale (.pl) juste via un use Toto.
Attention à l'espace de noms, c'est un avantage avec les packages, tu peux avoir 2 fonctions ayant le même nom, l'une dans ton programme principal, l'autre dans un package.
Par exemple, on a la fonction Pouet dans le package Toto.pm et tu as une fonction Pouet dans ton script qui utilise Toto.pm.
Dans ton programme, en faisant appel à Pouet(), c'est la fonction du script qui prévaudra. Pour utiliser celle du package, tu emploieras Toto:: Pouet().
Valà valà.
[jfdsdjhfuetppo]--Message édité par Aricoh--[/jfdsdjhfuetppo]
Marsh Posté le 21-03-2002 à 01:34:10
Reply
Marsh Posté le 18-03-2002 à 23:13:45
c possible de creer un module en perl avec ses ptites fonctions a soi dedans?
(désolé fallait que je demande )
---------------
Suri.morkitu.org : Balades au coeur de la ville...