[Perl] Creer un module...

Creer un module... [Perl] - Programmation

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 :D)


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 18-03-2002 à 23:13:45   

Reply

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 :D)  




 
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 :)

Reply

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]


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 21-03-2002 à 01:34:10    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed