OVH Cloud OVH Cloud

Peut-on savoir ce qu'il y a avant $ARGV[0] ?

4 réponses
Avatar
Jean-Luc Ancey
Bonsoir tout le monde. Je suis un mauvais sujet qui a pris
de déplorables habitudes en langage C, et notamment avec les
bouts de code du type

int main (int argc, char **argv) {

Dans cet affreux langage berk pas beau qu'est C, un programme
peut savoir sous quel nom on l'a appelé en regardant ce qu'il
y a dans argv[0]. Si mon programme s'appelle monProg et que
je l'appelle avec une syntaxe de ce type

./monProg arg1 arg2 arg3

eh bien argv[0] c'est "./monProg", argv[1] c'est "arg1" et
ainsi de suite.

Or donc, je m'imaginais qu'en Perl c'était kif-kif (voire
encore plus simple) et que quand j'appelais mon joli script
comme ça

./monScript.pl arg1 arg2 arg3

j'allais obtenir "./monScript.pl" dans $ARGV[0] et "arg1"
dans $ARGV[1]. Eh bien, cornegidouille, ce n'est pas le cas:
$ARGV[0] contient "arg1"... et je ne sais pas du tout comment
me débrouiller pour récupérer le nom de mon script.

Quelqu'un connaîtrait-il la manip qui va bien pour
qu'un script récupère le nom sous lequel on l'a lancé? Ça
me serait bien utile. Merci d'avance.

--
Jean-Luc Ancey - jlancey@nospam.com - http://www.amarelia.org
To reply, please replace "nospam" with "rocketmail"
Le progrès consiste à remplacer ce qui ne marchait pas vraiment mal
par ce qui ne marche pas vraiment bien.

4 réponses

Avatar
DoMinix
Bonsoir tout le monde.
...

../monScript.pl arg1 arg2 arg3

j'allais obtenir "./monScript.pl" dans $ARGV[0] et "arg1"
dans $ARGV[1]. Eh bien, cornegidouille, ce n'est pas le cas:
$ARGV[0] contient "arg1"... et je ne sais pas du tout comment
me débrouiller pour récupérer le nom de mon script.
...


le nom du programme est dans $0 tout simplement.
note que ce nom est filtré sur le nom du script.

perl monscript
$0 contient "monscript"
mais ./monscript
$0 contient "./monscript"

--
dominix

Avatar
DoMinix
Bonsoir tout le monde.
....

../monScript.pl arg1 arg2 arg3

j'allais obtenir "./monScript.pl" dans $ARGV[0] et "arg1"
dans $ARGV[1]. Eh bien, cornegidouille, ce n'est pas le cas:
$ARGV[0] contient "arg1"... et je ne sais pas du tout comment
me débrouiller pour récupérer le nom de mon script.
....


le nom du programme est dans $0 tout simplement.
note que ce nom est filtré sur le nom du script.

perl monscript
$0 contient "monscript"
mais ./monscript
$0 contient "./monscript"



ha oui, bien sur, j'ai oublié
perldoc perlvar

--
dominix


Avatar
Jean-Luc Ancey
DoMinix wrote:
le nom du programme est dans $0 tout simplement.


Bon sang mais c'est bien sûr! Merci beaucoup.

--
Jean-Luc Ancey - - http://www.amarelia.org
To reply, please replace "nospam" with "rocketmail"

Avatar
Paul Gaborit
À (at) Sun, 12 Mar 2006 12:09:43 -1000,
DoMinix écrivait (wrote):
ha oui, bien sur, j'ai oublié
perldoc perlvar


Et ça tombe bien car je viens de terminer la mise à jour de la
traduction de perlvar en version 5.8.8. Donc :

<http://perl.enstimac.fr/DocFr/perlvar.html#item_$PROGRAM_NAME>

(Cette partie n'a pas beaucoup évoluée...)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>