Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Nouveau Membre du Club
    Homme Profil pro Nicolas
    Inscrit en
    février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : février 2009
    Messages : 37
    Points : 26
    Points
    26

    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 Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 164
    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 164
    Points : 7 656
    Points
    7 656

    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
    16 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 487
    Points : 465 201
    Points
    465 201

    Par défaut

    J'ai pas tout saisi, mais voici un code qui pourrait te suffire :

    Code :
    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";

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

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

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : février 2009
    Messages : 37
    Points : 26
    Points
    26

    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
    16 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 487
    Points : 465 201
    Points
    465 201

    Par défaut

    as tu testé le script ?

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

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

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : février 2009
    Messages : 37
    Points : 26
    Points
    26

    Par défaut

    Ben rapido oui

    Code :
    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
    Invité de passage
    Inscrit en
    octobre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 1
    Points : 1
    Points
    1

    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

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •