bonjour,

je crée une application qui commence à prendre un peu d'ampleur et, soucieux de m'y retrouver à l'avenir, j'aimerais mettre mes différents modules dans des sous répertoires.

Exemple: une partie de mon application donne accès à la base de donnée (+ abstraction pour les types que j'y stoque) et se compose de 4 modules:
- eXist.pm;
- archives.pm;
- emission.pm;
- sequence.pm;
qui représentent chacune une classe.

pour plus de simplicité, j'ai créé un module les appellant tous les 4:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
package eXist_interface;
 
use eXist;
use archives;
use emission;
use archives;
 
###############################################################################
1; # Ainsi le require ou le use réussi...

Et j'utilisais ces classes simplement en faisant un use eXist_interface dans le script que j'écrivais (et que je lançais dans le même répertoire que tous ces packages).

Maintant j'aimerais mettre tous ces packages (plus des tas d'autres fichiers qui y sont reliés) dans un répertoire eXist_interface, et pouvoir l'appeller depuis le répertoire parent.

Je pensais que ça allait marcher tout seul en faisant un "use eXist_interface" mais non.

J'ai donc essayé "use eXist_interface::eXist_interface" (eXist_interface étant le répertoire dans lequel se trouve mon package eXist_interface.pm), il a réussi à loader eXist_interface.pm, mais plante lorsqu'il doit loader un des quatres modules!

J'ai aussi essayé d'ajouter le répertoire eXist_interface au début de mon programme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
#!/usr/bin/env perl
 
push(@INC, "./eXist_interface");
 
use strict;
use Tk;
use eXist_interface;
Mais sans résultat, on dirait qu'il fait les use AVANT le push!


une idée?

merci d'avance,

Laurent.