Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1274 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] chemin des modules dynamique...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] chemin des modules dynamique...

n°287633
z0rglub
Posté le 16-01-2003 à 14:16:51  profilanswer
 

bonjour à tous,
 
je suis en train de faire un script qui utilise des modules. Mon script est en phase de développement et il se trouve en /home/z0rglub/script/ dans lequel j'ai un sous répertoire avec mes modules : /home/z0rglub/script/module/
 
Dans mon script principal, j'utilise

Code :
  1. use lib qw( ./module/ );
  2. use Affichage;
  3. ...


 
Mais je voudrais pouvoir lancer ce script depuis autre part que le répertoire où il se trouve. Il faut donc que je mette :

Code :
  1. use lib qw( /home/z0rglub/script/module/ );
  2. use Affichage;
  3. ...


 
Seulement voilà, le jour où je passe le script en production, il faudra que je modifie le chemin "/home/z0rglub/script/"... (évidemment, cela apparaît plusieurs fois, sinon, ce serait pas vraiment la peine...). Et j'aimerais ne pas tout modifier.... Donc je fais ça :
 

Code :
  1. $path = '/home/z0rglub/script/';
  2. use lib qw( $path.'module/' );
  3. use Affichage;
  4. ...


 
Mais ça ne fonctionne pas, le $path n'est pas interprêté....
 
Alors je me demande comment faire pour rendre le chemin des modules plus "dynamique" (sachant que là j'ai volontairement simplifié, les modules étant en réalité dans plusieurs répertoires différents...)
 
:(


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
mood
Publicité
Posté le 16-01-2003 à 14:16:51  profilanswer
 

n°287741
sihal_agai​n
in doubt, reboot
Posté le 16-01-2003 à 16:33:01  profilanswer
 

met le dans une variable d'environement que tu defini différement pour ton utilisateur de prod et celui de test.  
Ca te fait une conf automatique  :whistle:


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
n°302427
phoenix35
Posté le 05-02-2003 à 16:10:44  profilanswer
 

z0rglub a écrit :

bonjour à tous,
 
je suis en train de faire un script qui utilise des modules. Mon script est en phase de développement et il se trouve en /home/z0rglub/script/ dans lequel j'ai un sous répertoire avec mes modules : /home/z0rglub/script/module/
 
Dans mon script principal, j'utilise

Code :
  1. use lib qw( ./module/ );
  2. use Affichage;
  3. ...


 
Mais je voudrais pouvoir lancer ce script depuis autre part que le répertoire où il se trouve. Il faut donc que je mette :

Code :
  1. use lib qw( /home/z0rglub/script/module/ );
  2. use Affichage;
  3. ...


 
Seulement voilà, le jour où je passe le script en production, il faudra que je modifie le chemin "/home/z0rglub/script/"... (évidemment, cela apparaît plusieurs fois, sinon, ce serait pas vraiment la peine...). Et j'aimerais ne pas tout modifier.... Donc je fais ça :
 

Code :
  1. $path = '/home/z0rglub/script/';
  2. use lib qw( $path.'module/' );
  3. use Affichage;
  4. ...


 
Mais ça ne fonctionne pas, le $path n'est pas interprêté....
 
Alors je me demande comment faire pour rendre le chemin des modules plus "dynamique" (sachant que là j'ai volontairement simplifié, les modules étant en réalité dans plusieurs répertoires différents...)
 
:(


 
Tu utilises le module FindBin. Grace a lui, tu as le chemin dans lequel se trouve le script que tu es entrain de faire tourner.
Ca donne:

Code :
  1. use FindBin;
  2. use lib $FindBin::Bin;

n°355900
z0rglub
Posté le 08-04-2003 à 16:33:06  profilanswer
 

phoenix35 a écrit :


 
Tu utilises le module FindBin. Grace a lui, tu as le chemin dans lequel se trouve le script que tu es entrain de faire tourner.
Ca donne:

Code :
  1. use FindBin;
  2. use lib $FindBin::Bin;




parfait (bon OK, la réponse est tardive, mais je ne l'utilise que depuis maintenant, et ça marche super, j'aurais économisé du temps si j'avais appliqué ta technique plus tôt)


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°355910
phoenix35
Posté le 08-04-2003 à 16:40:07  profilanswer
 

z0rglub a écrit :


parfait (bon OK, la réponse est tardive, mais je ne l'utilise que depuis maintenant, et ça marche super, j'aurais économisé du temps si j'avais appliqué ta technique plus tôt)


Desole pour le retard, mais avant je ne savais pas qu'hardware avec une section speciale Perl, alors maintenant, si je peux aider...

n°355921
z0rglub
Posté le 08-04-2003 à 16:49:56  profilanswer
 

phoenix35 a écrit :


Desole pour le retard, mais avant je ne savais pas qu'hardware avec une section speciale Perl, alors maintenant, si je peux aider...


http://forum.hardware.fr/forum2.php3?post=34879&cat=10  :D


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°364440
Fenris
Ar bleiz brezhon
Posté le 17-04-2003 à 10:45:30  profilanswer
 

Bonjour,
J'ai le même problème que z0rglub, mais en pire...
En effet, mes scripts sont appellés grâce à des liens dynamiques dans un répertoire XXX sous UNIX (créés avec ln -s), ce qui fait que FindBin renvoie la position des liens et non pas l'emplacement réel des scripts (qui sont dans un répertoire YYY, avec les modules dans YYY/Modules).
Quelqu'un connaitrait-il une solution ?


---------------
Certains font l'Histoire, d'autres la subissent
n°364912
Fenris
Ar bleiz brezhon
Posté le 17-04-2003 à 14:25:40  profilanswer
 

[:belgarion_cer]


---------------
Certains font l'Histoire, d'autres la subissent
n°365845
phoenix35
Posté le 18-04-2003 à 08:34:42  profilanswer
 

Fenris a écrit :

Bonjour,
J'ai le même problème que z0rglub, mais en pire...
En effet, mes scripts sont appellés grâce à des liens dynamiques dans un répertoire XXX sous UNIX (créés avec ln -s), ce qui fait que FindBin renvoie la position des liens et non pas l'emplacement réel des scripts (qui sont dans un répertoire YYY, avec les modules dans YYY/Modules).
Quelqu'un connaitrait-il une solution ?


Tu fais un FindBin pour trouver la position "symbolique" de ton script.
Tu fais un readlink sur ce fichier pour trouver la position reel de ton script.
Tu fais un dirname pour recuperer juste le chemin
Tu n'as plus qu'a rajouter le chemin  concatene a Modules
Et Voila

n°365966
Fenris
Ar bleiz brezhon
Posté le 18-04-2003 à 09:50:47  profilanswer
 

phoenix35 a écrit :


Tu fais un FindBin pour trouver la position "symbolique" de ton script.
Tu fais un readlink sur ce fichier pour trouver la position reel de ton script.
Tu fais un dirname pour recuperer juste le chemin
Tu n'as plus qu'a rajouter le chemin  concatene a Modules
Et Voila


 
Ca a l'air pas mal comme solution, je vais essayer, merci :jap:


---------------
Certains font l'Histoire, d'autres la subissent
mood
Publicité
Posté le 18-04-2003 à 09:50:47  profilanswer
 

n°365989
phoenix35
Posté le 18-04-2003 à 10:12:34  profilanswer
 

Fenris a écrit :


 
Ca a l'air pas mal comme solution, je vais essayer, merci :jap:


Encore mieux et plus facile.
Regardes la doc de FindBin du cote de $RealBin et $RealScript, ca a l'air d'etre directement ce que tu veux  ;)  
 
Je suis con, j'avais oublie de verifier

n°366030
Fenris
Ar bleiz brezhon
Posté le 18-04-2003 à 10:32:35  profilanswer
 

Bien vu, je n'avais pas trouvé les bonnes docs non plus :ange:
 
En fait , il suffit de faire:
 
use FindBin(qw($Bin $Script $RealBin $RealScript));
# $Bin         - path to bin directory from where script was invoked
# $Script      - basename of script from which perl was invoked
# $RealBin     - $Bin with all links resolved
# $RealScript  - $Script with all links resolved
 
use lib $FindBin::RealBin;
 
Et ça marche nickel ! Merci encore :jap:


---------------
Certains font l'Histoire, d'autres la subissent

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] chemin des modules dynamique...

 

Sujets relatifs
[T-SQL] Nom de colonne dynamique pour une table TEMPO !!!REMERCIEMENT + qq questions array dynamique.
[perl tk] preselection de boutons[servlet/jsp] récuérer le chemin réel de la racine d'une web-app
[PERL] perl et les bases de données[perl TK] comment on fait un drag n drop
Gestion de nom de variables dynamique (rapide... help)[PHP] - Commande pr connaitre le chemin d'un fichier
[ Perl ] - inporter des fonctions C++[PERL]-Interface graphique - Nouveau sujet.
Plus de sujets relatifs à : [Perl] chemin des modules dynamique...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR