Recuperer variable facultative ligne de commande - Perl - Programmation
Marsh Posté le 10-02-2012 à 14:51:50
Tout est dans le lien donne.
La solution la plus simple est de compter le nombre de parametres (ARGV), puis de lire ou non ton nombre de procs.
Je ne connais pas Perl, mais il y en a surement d'autres.
Marsh Posté le 10-02-2012 à 15:19:34
Bon, primo, utilises Getopt::Long qui est la Rolls du Getopt
Un exemple:
Code :
|
Ici, start:10 indique 1) on attends un entier, et 2, la valeur optionnelle vaudra 10
Quand on a l'option -start (ou /start par compatibilité DOS) sur la ligne de commande on appelle la routine startcmd.
La valeur associée (celle effective ou par défaut est le 2e argument d'ou le shift a vide initial)
Bon j'ai rajouté un check pour que le paramètre soit a la valeur par défaut s'il n'est pas positif.
Ensuite, c'est a toi de coder l'appel avec $COMMANDE avec ce qu'il faut, au lieu de mon print.
A+,
Marsh Posté le 10-02-2012 à 15:22:30
fred777888999 a écrit : Tout est dans le lien donne. |
Non, la solution la plus simple et rapide est d'utiliser comme il faut le bon module perl et de ne surtout pas réinventer la roue.
A+,
Marsh Posté le 10-02-2012 à 15:34:29
Merci beaucoup pour ce code Gilou
Je viens de le tester et il réagit exactement comme je le voulai.
(et merci pour l'astuce dos )
Merci encore,
Benjamin.
Marsh Posté le 13-02-2012 à 11:23:54
Bonjour,
J'ai essayé de mettre en place ce code dans mon projet.
ça me donne:
Code :
|
Le probleme c'est qu'en lançant la commande:
"CAL petit_bateau -stopP"
Ou CALest le nom de mon alias
petit_bateau le nom du projet a lancer ou arrêter
Le code ne réagit pas comme voulu. Il me lance la commande par défaut a savoir: il affiche l’état des process (up ou down).
Je pense que c'est ma façon de récupérer les infos dans mon GetOptions qui pêche. notamment dans les deux fonctions "startcmd_stopP" et "startcmd_cleanP".
Auriez vous une piste a suivre?
Merci,
Benjamin.
Marsh Posté le 13-02-2012 à 12:17:19
Je vois pas ce qui colle pas, ceci marche parfaitement:
Code :
|
C:\Perl>testop.pl -start |
Ajoute à tout hasard une ligne comme $param //= 10; (si $param est pas défini, alors $param vaut 10)
A+,
Marsh Posté le 13-02-2012 à 14:10:40
Si, la première version fonctionne dans le sens ou elle affiche bien le nombre indiqué par l'utilisateur ou 10 par defaut.
Mais la ou ça coince c'est quand j'essaie de faire en sorte d'aller plus loin.
Pour faire simple:
Si je met mon code comme ceci:
Code :
|
ça fonctionne bien car dans un autre fichier, j'ai indiqué en dure la valeur "10".
Mais ce que je voudrai faire, c'est donner a l'utilisateur la possibilité de mettre la valeure qu'il decide.
Donc il faut que je variabilise cette valeur.
Donc il faut que:
1- je parvienne a récupérer la valeur indiquée par l'utilisateur: ça ton code le fait tres bien
2- que je mette cette valeur dans une variable qui puisse être utilisé plus tard dans le code.
Donc je pensai a quelque chose du genre:
Code :
|
Ainsi le code fonctionnerai comme indiqué dans l'exemple juste dessus grâce aux deux return des fonctions mais je serai également parvenu a récupérer la valeur indiqué par l'utilisateur dans une variable globale que j'utiliserai plus tard.
Or, mes return ne doivent pas retourner quelqe chose de valide car le code ne se lance pas comme dans l'exemple 1 de ce message.
J’espère avoir réussis a m’être fait comprendre.
Merci,
Benjamin.
Marsh Posté le 13-02-2012 à 14:21:34
OK!
C'est pas return "print '$COMMANDE->{CLEANP},'"; que tu dois faire, mais
$COMMANDE->{CLEANP};
Tout simplement, si tu veux lancer la commande.
Et pas besoin d'un return
A+,
Marsh Posté le 13-02-2012 à 18:02:23
En effet, merci beaucoup
Marsh Posté le 10-02-2012 à 12:31:45
Bonjour,
J'ai un script PERL que les utilisateurs lancent grace a une ligne de commande.
Afin d'améliorer ce script, je voudrai qu'ils puissent spécifié un nombre pour savoir le nombre de fork qu'ils acceptent que le systeme lance.
Typiquement:
Si l'utilisateur saisi:
"mon_script -start" ça lance le script avec par defaut 10 processus
"mon_script -start 20" ça lance le script avec 20 processus
Donc le nombre est facultatif.
J'ai fait des recherches et j'ai vu ce site:
http://articles.mongueurs.net/maga [...] mag49.html
Qui est bien mais je n'ai pas bien saisi comment rendre un paramètre facultatif.
Actuellement j'ai:
GetOptions (
"-start" => \$COMMANDE->{START},
"-stop" => \$COMMANDE->{STOP},
"-v" => \$COMMANDE->{VERBOSE},
"-version" => \$V
);
Avez vous une idée pour récupérer ce nombre facultatif (et pour le rendre facultatif avec une valeur par défaut)?
Merci,
Benjamin.
Message édité par Super_carotte le 10-02-2012 à 12:32:47