Parseur d'options [Perl] - Perl - Programmation
Marsh Posté le 26-12-2004 à 12:35:41
Le mieux dans ce cas est de creer toi même ton parseur d'options. C'est très facile à faire, il te suffit d'utiliser @_ ou @ARGS, je ne me rappelle plus vraiment, dans ton script principal.
Marsh Posté le 26-12-2004 à 14:26:39
Tu peux utiliser , getopt(), getopts() ou meme getoptions() et vérifier @ARGV pour savoir si oui ou non il y a des parametres passés a ton programme.
(fleme du dimanche ? ou google hors service ?!)
Marsh Posté le 26-12-2004 à 20:43:30
Alors en fait je sais que getopt(je l'ai dis dans mon message) existe mais il ne fait pas ce que je veux c'est a dire pouvoir recuperer des agurment comme je l'ai decris. Si on veut faire des inclusion multiples on dois ecrire la chose comme ceux ci :
./test.pl -r toto -r tata
Or je voudrais que le script ait un comportement similaire mais avec cette syntaxe :
./test.pl -r toto tata.
Finalement j'ai tout fais tout seul ca m'as pris mon de temps mais c'est porc (je sais pas comment on fais des tableau de pointeur de fonctions ) par rapport a ce que j'ai fais en C et c'est pas assez generique a mon gout.
Mais j'ai decouvert le perl ce matin donc c'est normal
Marsh Posté le 27-12-2004 à 01:42:43
Oui peut etre que getopt::long permet de le faire mais j'ai pas trouver l'option adequate
Marsh Posté le 27-12-2004 à 03:39:56
bin...
./test.pl -r toto tata
"toto tata" sera ta valeur pour ton hash, alors après t'as qu'à faire un split sur " " pour récupéré chaque paramètre lorsque c'est des paramètres multiples
Marsh Posté le 27-12-2004 à 14:52:37
Je suis pas sur de te suivre, je suis debutant en perl cependant je pense que l'option r n'auras comme valeur que toto, tata sera pris comme un parametre au script(je suis pas sur que ca s'appelle comme ca pour le perl). Mais si je me trompe je ve bien que tu m'explique comment je peux faire pour que -r prenne la valeur toto tata. Parce que pout l'instant j'ai un script qui fais une centaine de ligne que j'aimerais bien voir se reduire .
Marsh Posté le 27-12-2004 à 16:52:12
bin il me semble qu'avec Getopt::Long, le paramètre sera bien "toto tata" et non "toto"
ensuite il te reste plus qu'avec utiliser la fonction "split" pour séparer les mots
Marsh Posté le 27-12-2004 à 23:44:13
Non, le parametre d'un flag est le mot qui suit le flag. Le mot suivant est le premier mot des "non-option argument". C'est comme ca que marchent a peu pres tous les programmes sous unix/linux. Par contre si tu appelle ./test -r "toto tata" alors c'est bien "toto tata" qui sera passe en argument du flag r. Pareil si tu fais ./test.pl -r toto\ tata
Marsh Posté le 28-12-2004 à 11:45:19
Donc c'est bien ce que je pensais il n'y a pas de moyen de faire ce que je veux a part les guillemets ou repeter l'options devant chaque argument.
Merci quand meme de vos reponses
Marsh Posté le 26-12-2004 à 11:24:13
Bonjour,
Je voudrais faire un parseur d'options qui permetterais de recuperer plusieurs valeurs pour une options, par exemple : ./test.pl -r toto tata -autre_options.
J'ai commencer a utiliser getopt::long mais celui ci ne me recupere que la valeur toto pour l'option -r. Or je voudrais que getopt que -r prenne la valeur toto tata sans utiliser les guillemets pour accrocher les 2 valeurs.
Est ce que je peux configurer getopt::long pour qu'il est un comportement similaire a :
./test.pl -r "toto tata" -autre_options mais avec la ligne precedente.