Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Programmation et administration système
Programmation et administration système Vos questions sur les scripts d'administration système, création de compte utilisateur, socket, fork, ping, etc...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/04/2009, 14h53   #1
Deneteth
Nouveau Membre du Club
 
Homme Nicolas
Inscription : 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 : 28
Points : 28
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.
Deneteth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2009, 15h36   #2
Jedai
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 8 209
Points : 8 209
Envoyer un message via Yahoo à Jedai
Tu as le module FindBin (dans le CORE), pas idéal mais mieux que rien.

--
Jedaï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2009, 15h37   #3
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 589
Points : 31 589
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 !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2009, 11h01   #4
Deneteth
Nouveau Membre du Club
 
Homme Nicolas
Inscription : 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 : 28
Points : 28
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 !
Deneteth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2009, 11h02   #5
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 589
Points : 31 589
as tu testé le script ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2009, 11h15   #6
Deneteth
Nouveau Membre du Club
 
Homme Nicolas
Inscription : 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 : 28
Points : 28
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.
Deneteth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 15h37   #7
seagull
Invité de passage
 
Inscription : octobre 2008
Messages : 1
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 1
Points : 1
Points : 1
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
seagull est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h39.


 
 
 
 
Partenaires

Hébergement Web