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

Programmation et administration système Perl Discussion :

Récupération du chemin du script en cours


Sujet :

Programmation et administration système Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Récupération du chemin du script en cours
    Bonjour à tous,

    Je cherche un moyen de récupérer le chemin complet du script dans lequel je me trouve au cours d'une execution. Pour faciliter je cherche un moyen non dépendant de l'OS (commande externe exclue donc) et je ne souhaite pas avoir à passer cette information en tant que paramètre (oui je fais dans le simple). Je considère aussi que le chemin de ce script peut très bien ne pas être le chemin en cours (cwd) lors de l'exécution.

    Quelque chose de similaire à la variable $0 mais avec le chemin serait parfait en fait mais je n'ai rien trouvé de concluant...

    Merci d'avance.

  2. #2
    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
    Tu as le module FindBin (dans le CORE), pas idéal mais mieux que rien.

    --
    Jedaï

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    J'ai pas tout saisi, mais voici un code qui pourrait te suffire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/perl
    use Cwd; 
    use warnings;
    use strict;
     
    print "Nom OS : ",$^O,"\n";
    print "Script courant : ",$0,"\n";
    print "Répertoire Courant : ",getcwd,"\n";

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Points : 40
    Points
    40
    Par défaut
    Le probleme du cwd c'est qu'il va me renvoyer le répertoire courant donc mettons que je me trouve dans /home/deneteth, si j'exécute le script /usr/bin/test.pl je vais récupérer /home/deneteth et pas /usr/bin/ (ce que je recherche).

    Pour ce qui est du FindBin par contre il y a peut être quelque chose (le basename semble correspondre à ce que je recherche). Je vais regarder cela de plus près.

    Merci !

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    as tu testé le script ?

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Points : 40
    Points
    40
    Par défaut
    Ben rapido oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    use Cwd;
    use FindBin qw ( $Bin $Script );
     
    print "Trouvé $Script dans $Bin \n";
     
    $test = getcwd();
     
    print "Trouvé $0 dans $test\n";
     
    exit 0;
    J'ai bien le chemin recharché dans le premier cas, je récupère mon répertoire en cours dans le second (C: dans mon cas).

    Par contre je retire ce que j'ai dit sur $0, il m'a effectivement retourné le chemin complet ce coup-ci et pas dans mon autre script... je vais regarder cela de plus prêt.

    Je passe résolu de toute façon, j'ai effectivement un moyen de récupérer le chemin qui m'intéresse.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    je déterre ce sujet résolu pour apporter une petite précision (qui a déjà été évoqué à propos du basename).

    La variable $0 est à traiter avec le module Find :
    use Find::Basename;
    my $nom_script = basename $0; #=> nom du script
    my $rep_script = dirname $0;#=> repertoire du script quelque soit le repertoire courant de lancement

    Plus d'infos dans les tutoriels et cours de formation pour apprendre la programmation PERL : http://perl.developpez.com/cours/

  8. #8
    Membre actif

    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 87
    Points : 217
    Points
    217
    Par défaut
    Citation Envoyé par seagull Voir le message
    je déterre ce sujet résolu pour apporter une petite précision (qui a déjà été évoqué à propos du basename).

    La variable $0 est à traiter avec le module Find :
    use Find::Basename;
    my $nom_script = basename $0; #=> nom du script
    my $rep_script = dirname $0;#=> repertoire du script quelque soit le repertoire courant de lancement

    Plus d'infos dans les tutoriels et cours de formation pour apprendre la programmation PERL : http://perl.developpez.com/cours/
    Bonjour seagull,
    Je reviens vers cette discussion car j'ai le même problème que Deneteth...Je viens de tester ta proposition et elle marche bien, merciiii !
    Mais je pense que c'est use File::Basename; qu'il faut mettre plutôt que use Find::Basename; c'est ce que j'ai mis de toutes les façons et cela a bien marché.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2009, 10h03
  2. Récupérer chemin absolu du script en cours d'exécution
    Par greatmaster1971 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 15/09/2008, 09h07
  3. afficher le chemin du script executé
    Par Mokhtar BEN MESSAOUD dans le forum Général Python
    Réponses: 2
    Dernier message: 07/07/2006, 16h06
  4. input type=file, récupération du chemin
    Par alexthomas dans le forum Langage
    Réponses: 5
    Dernier message: 22/11/2005, 14h02
  5. Récupération du chemin d'une image
    Par kurul1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/09/2005, 10h40

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