chemin des modules dynamique... [Perl] - Perl - Programmation
Marsh Posté le 16-01-2003 à 16:33:01
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
Marsh Posté le 05-02-2003 à 16:10:44
z0rglub a écrit : bonjour à tous,
|
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 :
|
Marsh Posté le 08-04-2003 à 16:33:06
phoenix35 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)
Marsh Posté le 08-04-2003 à 16:40:07
z0rglub 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...
Marsh Posté le 08-04-2003 à 16:49:56
phoenix35 a écrit : |
http://forum.hardware.fr/forum2.php3?post=34879&cat=10
Marsh Posté le 17-04-2003 à 10:45:30
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 ?
Marsh Posté le 17-04-2003 à 14:25:40
Marsh Posté le 18-04-2003 à 08:34:42
Fenris a écrit : Bonjour, |
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
Marsh Posté le 18-04-2003 à 09:50:47
phoenix35 a écrit : |
Ca a l'air pas mal comme solution, je vais essayer, merci
Marsh Posté le 18-04-2003 à 10:12:34
Fenris a écrit : |
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
Marsh Posté le 18-04-2003 à 10:32:35
Bien vu, je n'avais pas trouvé les bonnes docs non plus
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
Marsh Posté le 16-01-2003 à 14:16:51
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
Mais je voudrais pouvoir lancer ce script depuis autre part que le répertoire où il se trouve. Il faut donc que je mette :
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 :
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