Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1559 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  ou m'éxécute-je ? pb simple de path

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ou m'éxécute-je ? pb simple de path

n°1107379
denzz
huhuuuuu ! (désolé )
Posté le 03-06-2005 à 17:21:25  profilanswer
 

salut,
c un repost, je c c pas bien mais vu que personne code en perl, et que le pb peut être résolu par une commande shell ...  
 
le pb est simple je veux connaître à l'éxécution de mon script perl et sans le passer en paramètre l'endroit ou il est éxécuté, sachant qu'un simple appel à pwd ne fait pas ce que je veux si le script est appelé comme suit :
perl /mnt/temp/messuperscriptsperl/monscript.pl param1 param2 etc ...
 
merci d'avance :)
 

mood
Publicité
Posté le 03-06-2005 à 17:21:25  profilanswer
 

n°1107469
matafan
Posté le 03-06-2005 à 18:00:27  profilanswer
 

La reponse est simple : ce n'est pas possible.

n°1107549
benji_100
Posté le 03-06-2005 à 19:02:47  profilanswer
 

L'endroit OU il est executé est toujours le meme puisque ton script ne bouge pas...
L'endroit D'OU il est executé, il suffirait de passer au script le "pwd"... Ca devrait s'arranger avec un alias.
A creuser mais je penses que c est faisable.

n°1109370
denzz
huhuuuuu ! (désolé )
Posté le 06-06-2005 à 11:04:23  profilanswer
 

merci pr vos réponses :) je v me démerder autrement.

n°1109383
Elmoricq
Modérateur
Posté le 06-06-2005 à 11:19:48  profilanswer
 

denzz a écrit :

c un repost, je c c pas bien mais vu que personne code en perl, et que le pb peut être résolu par une commande shell ...


 
Si, si, y a des gens qui codent en PERL.
 

denzz a écrit :

le pb est simple je veux connaître à l'éxécution de mon script perl et sans le passer en paramètre l'endroit ou il est éxécuté, sachant qu'un simple appel à pwd ne fait pas ce que je veux si le script est appelé comme suit :
perl /mnt/temp/messuperscriptsperl/monscript.pl param1 param2 etc ...


 
$ENV{PWD} est plus propre que d'appeler pwd directement.
 
Je ne comprends pas la question, tu veux savoir où se trouve le fichier ?
 
Si oui, il te suffit de lire le paramètre $0, qui contient la commande d'exécution.  
 
Si le premier caractère de $0 est un /, alors le chemin est absolu, et $0 te suffit.
Dans le cas contraire, le chemin est relatif, et il suffit de concatener $ENV{PWD} avec le contenu de $0 (et un / entre les deux).

n°1110222
ritzle
Posté le 06-06-2005 à 19:48:44  profilanswer
 

$PROGRAM_NAME
mais je crois que c'est pareil que $0

n°1110259
matafan
Posté le 06-06-2005 à 20:32:59  profilanswer
 

Elmoricq a écrit :

Si le premier caractère de $0 est un /, alors le chemin est absolu, et $0 te suffit.
Dans le cas contraire, le chemin est relatif, et il suffit de concatener $ENV{PWD} avec le contenu de $0 (et un / entre les deux).


C'est touchant de naivete. Comment fais-tu dans le cas ou l'appli a change le repertoire courrant ? Il n'y a aucun moyen de faire ce qu'il veut dans le cas general.

n°1110385
Elmoricq
Modérateur
Posté le 06-06-2005 à 22:42:13  profilanswer
 

matafan a écrit :

C'est touchant de naivete. Comment fais-tu dans le cas ou l'appli a change le repertoire courrant ? Il n'y a aucun moyen de faire ce qu'il veut dans le cas general.


 
De quelle application tu parles ?
Relis donc le sujet initial ; on n'est pas dans un cas général, je ne sais pas où tu es allé lire ça :
 

Citation :

le pb est simple je veux connaître à l'éxécution de mon script perl et sans le passer en paramètre l'endroit ou il est éxécuté, sachant qu'un simple appel à pwd ne fait pas ce que je veux si le script est appelé comme suit :
perl /mnt/temp/messuperscriptsperl/monscript.pl param1 param2 etc ...


 
Ce qui est, j'espère que tu en conviendras, tout à fait possible.  
On pourra éventuellement compléter par un test plus complet avec prise en compte de la variable $ENV{PATH}.
 
Merci de pondérer tes réponses avant d'employer les insultes.


Message édité par Elmoricq le 06-06-2005 à 22:46:42
n°1115451
denzz
huhuuuuu ! (désolé )
Posté le 10-06-2005 à 11:10:53  profilanswer
 

merci les gars ;)  
et c pas la peine de se battre pour moi :D
par contre, $0 c pas la même chose que $ARGV[0] alors ??
faudrait que je revoie mes connaissances en perl je crois ^^
 
merci aux gens qui codent en perl d'être toujours là !!  
 

n°1115457
Elmoricq
Modérateur
Posté le 10-06-2005 à 11:13:06  profilanswer
 

Citation :

par contre, $0 c pas la même chose que $ARGV[0] alors ??


 
Je ne connais pas $ARGV[0].
 
Vu que je n'ai pas la science infuse, j'ai testé, ça me retourne ceci (warnings activés) :
 

Use of uninitialized value at test.pl line 5.


 
Je dirais donc que ça n'existe pas.

mood
Publicité
Posté le 10-06-2005 à 11:13:06  profilanswer
 

n°1115469
denzz
huhuuuuu ! (désolé )
Posté le 10-06-2005 à 11:25:06  profilanswer
 

....
$ARGV[0] pour moi c le premier paramètre passé au script.
lorsque tu appelle ton script  
test.pl monpremierargument  
ca te renvoie tjrs rien ??  
tu me fais douter là, comment ca se fait que mes scripts perl font ce que je veux ??  :ouch:  :ouch:


Message édité par denzz le 10-06-2005 à 11:25:19
n°1115481
Elmoricq
Modérateur
Posté le 10-06-2005 à 11:32:09  profilanswer
 

Non.
 
En fait je viens de lire ma doc, et @ARGV ne stocke que les arguments effectifs, il ne contient apparemment pas la ligne de commande.
 
Exemple :

Code :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. if (not defined ( @ARGV ))
  4. {
  5.     print "Aucun argument\n";
  6.     exit 0;
  7. }
  8. foreach my $i ( 0..$#ARGV )
  9. {
  10.     print "Argument $i : " . $ARGV[$i] . "\n";
  11. }


 
 
Retourne :
 

[user@machine ~/Work/tmp] perl test.pl arg1 arg2 arg3
Argument 0 : arg1
Argument 1 : arg2
Argument 2 : arg3
[user@machine ~/Work/tmp] perl test.pl  
Aucun argument
[user@machine  ~/Work/tmp]  


 
 
 
En revanche, $0 contient toujours le nom du programme tel qu'il a été démarré.


Message édité par Elmoricq le 10-06-2005 à 11:42:14
n°1128337
denzz
huhuuuuu ! (désolé )
Posté le 23-06-2005 à 10:10:55  profilanswer
 

oufff  
tu me rassures :)
bon, et bien je v essayer comme ca :)  
en fait le but est de connaître le path où est situé le script, donc $0 ne répond pas directement à mon problème, il faut que je teste si c'est un chemin complet ou pas...  
raaa la flemme de coder tout ca, ca marche comme c'est point barre :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  ou m'éxécute-je ? pb simple de path

 

Sujets relatifs
ou m'éxécute-je ? pb simple de pathComment maitre un mot de passe dans une page html simple.
Cherche un blog en php/sql simple a télécharger[css/jvs]Derouler un div en cliquant un simple bouton
Problème avec la commande set Pathpb requete simple
Simple Standards-based SlideShow System[css] creer 2 colonnes (probleme tres simple)
Plus de sujets relatifs à : ou m'éxécute-je ? pb simple de path


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR