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

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Parseur d'options

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Parseur d'options

n°931958
el_loco
Plus on de fous plus on ri
Posté le 26-12-2004 à 11:24:13  profilanswer
 

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.

mood
Publicité
Posté le 26-12-2004 à 11:24:13  profilanswer
 

n°931987
maximew
Coffee and cigarettes and Cate
Posté le 26-12-2004 à 12:35:41  profilanswer
 

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.


---------------
Mon Flickr
n°932023
ouned-codi​ng
Posté le 26-12-2004 à 14:26:39  profilanswer
 

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 ?!) :mmmfff:


Message édité par ouned-coding le 26-12-2004 à 14:29:10
n°932174
el_loco
Plus on de fous plus on ri
Posté le 26-12-2004 à 20:43:30  profilanswer
 

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 ;)

n°932195
burgergold
5$? va chez l'diable!
Posté le 26-12-2004 à 22:31:29  profilanswer
 

Getopt::Long ?

n°932219
el_loco
Plus on de fous plus on ri
Posté le 27-12-2004 à 01:42:43  profilanswer
 

Oui peut etre que getopt::long permet de le faire mais j'ai pas trouver l'option adequate

n°932225
burgergold
5$? va chez l'diable!
Posté le 27-12-2004 à 03:39:56  profilanswer
 

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

n°932512
el_loco
Plus on de fous plus on ri
Posté le 27-12-2004 à 14:52:37  profilanswer
 

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 ;).

n°932602
burgergold
5$? va chez l'diable!
Posté le 27-12-2004 à 16:52:12  profilanswer
 

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

n°932800
matafan
Posté le 27-12-2004 à 23:44:13  profilanswer
 

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

mood
Publicité
Posté le 27-12-2004 à 23:44:13  profilanswer
 

n°932970
el_loco
Plus on de fous plus on ri
Posté le 28-12-2004 à 11:45:19  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Parseur d'options

 

Sujets relatifs
Perl : est il possible de lire un fichier sans le bloquer en écriture?[Perl et CPAN] .. ca mache pas du tout :/
Options GCC pour compiler bibliothèque C++Besoin d'aide pour un exposé (oracle, sqlserver, php, JS, perl et asp)
probleme script perl[Perl] fonction sysread
[perl et formulaires] afficher tous les param()[GNU] options de compilation
Connexion perl <-> SQL Serverlien HTML crée à partir d'un script perl
Plus de sujets relatifs à : [Perl] Parseur d'options


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