IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] Récupération du Path de l'exécutable en cours ....


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 18
    Points
    18
    Par défaut [langage] Récupération du Path de l'exécutable en cours ....
    Bonjour,

    J'aimerais savoir si il est possible de récupérer le path complet du script en cours ?

    W2K
    ActivePerl 5.8

    Le problème est le suivant :
    Le programme que je fais sera transformé en exécutable et placé sur des machines dont le path peut varier de l'une à l'autre. Ce programme a besoin d'un fichier "de configuration" placé dans le même répertoire que lui.
    Pour aller chercher ce fichier de configuration, j'utilise le '.' indiquant le répertoire courant, mais lorsque l'exe est appelé depuis un autre chemin, il ne trouve pas le fichier de configuration.
    Est-ce clair ?

  2. #2
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Regarde du cote de la variable $0 (ou $PROGRAM_NAME avec 'use English').

    Tu auras le path avec. Il te reste plus qu'a extraire le chemin. Si tu veux le chemin absolu, il te suffit de change de repertoire (pour te trouver dans celui de l executable) et ensuite tu recuperes la commande via une commande comme pwd (Sous Unix). Ou sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    use POSIX;
     
    my $path_abs = getcwd();
    print $path_abs . "\n";

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    En fait Nyal, $0 ne donne pas le path, juste le nom du script...
    Et le problème de pwd() c'est qu'effectivement on peut lancer le script à partir d'un autre répertoire.
    La solution est par contre fournie par un module du CORE : FindBin, et par le scalaire qu'il fournit : $Bin.
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    use FindBin;
    print $FindBin::Bin;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    use FindBin qw(Bin);
    print $Bin;
    Ces deux morceaux de code vont imprimer le répertoire où se trouve le script en train d'être exécuté, c'est garanti à 100% et c'est multi-plateforme.

    [EDIT] En fait j'ai à moitié faux puisque $0 est simplement le nom du script tel qu'il est appelé sur la ligne de commande, on peut donc s'en servir pour déterminer le chemin du binaire en prenant en compte tous les cas spéciaux (chemin relatif à développer, répertoire courant lorsqu'il n'y a rien devant le nom du script (dans le cas de Windows) ou l'un des répertoires du PATH (sous windows et linux)). Désolé Nyal
    Mais FindBin évite de se prendre la tête pour pas cher (c'est un module qui ne sert qu'à ça, donc pas lourd du tout ).

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    MERCI à tous les 2
    J'ai utilisé la solution de Nyal qui a fonctionné du premier coup...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] variable dans le path d'un fichier
    Par caro_du_94 dans le forum Langage
    Réponses: 2
    Dernier message: 21/10/2004, 12h03
  2. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  3. Réponses: 5
    Dernier message: 27/07/2004, 17h04
  4. [langage] path fichier
    Par louisis dans le forum Langage
    Réponses: 3
    Dernier message: 13/07/2004, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo