ou m'éxécute-je ? pb simple de path - Shell/Batch - Programmation
Marsh Posté le 03-06-2005 à 19:02:47
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.
Marsh Posté le 06-06-2005 à 11:19:48
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 : |
$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).
Marsh Posté le 06-06-2005 à 20:32:59
Elmoricq a écrit : Si le premier caractère de $0 est un /, alors le chemin est absolu, et $0 te suffit. |
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.
Marsh Posté le 06-06-2005 à 22:42:13
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 : |
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.
Marsh Posté le 10-06-2005 à 11:10:53
merci les gars
et c pas la peine de se battre pour moi
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à !!
Marsh Posté le 10-06-2005 à 11:13:06
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.
Marsh Posté le 10-06-2005 à 11:25:06
....
$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 ??
Marsh Posté le 10-06-2005 à 11:32:09
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 :
|
Retourne :
[user@machine ~/Work/tmp] perl test.pl arg1 arg2 arg3 |
En revanche, $0 contient toujours le nom du programme tel qu'il a été démarré.
Marsh Posté le 23-06-2005 à 10:10:55
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
Marsh Posté le 03-06-2005 à 17:21:25
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