[PERL]-Problème "for if elsif" en menu
Résolu
blux
Messages postés
27121
Date d'inscription
Statut
Modérateur
Dernière intervention
-
blux Messages postés 27121 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27121 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai créé une petite structure de menu en PERL, mais j'ai un souci lors de la saisie d'un choix avec 2 chiffres, il ne me prend que le dernier et va donc au menu correspondant, pas à celui que je voudrais (ex : je saisis 98, il va au choix 8, 97 ->7)
Une explication/correction ?
Merci d'avance.
j'ai créé une petite structure de menu en PERL, mais j'ai un souci lors de la saisie d'un choix avec 2 chiffres, il ne me prend que le dernier et va donc au menu correspondant, pas à celui que je voudrais (ex : je saisis 98, il va au choix 8, 97 ->7)
Une explication/correction ?
Merci d'avance.
while ($SAISIE != 99) { print "\t\t\t\tPool en cours : ".$TAB_POOL[$SAISIE_POOL][0]."\n"; print "\t\tProchains jours ouvrés : ".$JO1D." ".$JO1J."/".$JO1M."/".$JO1A." et ".$JO2D." ".$JO2J."/".$JO2M."/".$JO2A."\n"; print " 1 - \n"; print " 2 - \n"; print " 3 - \n"; print " 4 - \n"; print " 5 - \n"; print " 6 - \n"; print " 7 - \n"; print " 8 - \n"; print "99 - Sortie\n"; print "\nVotre choix -> "; $SAISIE = <STDIN>; chomp($SAISIE); print "#".$SAISIE."#\n"; for ($SAISIE) { if (/1/) { print $I."-".$TAB_POOL[$I][0]."\t"; } elsif (/2/) { ListeCart(); } elsif (/3/) { # $IG est l'indice à partir duquel commencent les noms de groupes dans le tableau $I = $IG; } elsif (/4/) { print "Constitution de la liste des cartouches\n"; } elsif (/5/) { print "Marche pôô!\n"; } elsif (/6/) { $I = $IG; print "\n"; } elsif (/7/) { for $I (0..$NB_ELEM-1) { print $LIST."\n"; } } elsif (/8/) { for $I (0..$NB_ELEM-1) { print $LIST."\n"; } } elsif (/98/) { print "Forçage\n"; } elsif (/99/) { die "Fin\n"; } } }
A voir également:
- [PERL]-Problème "for if elsif" en menu
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Menu déroulant excel - Guide
- Canon quick menu - Télécharger - Utilitaires
- Excel menu déroulant en cascade - Guide
- Windows 11 menu contextuel classique - Guide
2 réponses
Salut,
il ne me prend que le dernier et va donc au menu correspondant, pas à celui que je voudrais (ex : je saisis 98, il va au choix 8, 97 ->7)
Puisqu'il trouve d'abord /7/ ou /8/
for ($SAISIE)
for est équivalent avec foreach et on l'utilise pour les tableau
for(@chaque_element)
foreach(@chaque_element)
Aussi pour les imbrications. C'est laide avec autant des if...elsif..
Tu peux faire comme ça
use Switch;
il ne me prend que le dernier et va donc au menu correspondant, pas à celui que je voudrais (ex : je saisis 98, il va au choix 8, 97 ->7)
Puisqu'il trouve d'abord /7/ ou /8/
for ($SAISIE)
for est équivalent avec foreach et on l'utilise pour les tableau
for(@chaque_element)
foreach(@chaque_element)
Aussi pour les imbrications. C'est laide avec autant des if...elsif..
Tu peux faire comme ça
while ($SAISIE != 99){ print "\t\t\t\tPool en cours : ".$TAB_POOL[$SAISIE_POOL][0]."\n"; print "\t\tProchains jours ouvrés : ".$JO1D." ".$JO1J."/".$JO1M."/".$JO1A." et ".$JO2D." ".$JO2J."/".$JO2M."/".$JO2A."\n"; print " 1 - \n"; print " 2 - \n"; print " 3 - \n"; print " 4 - \n"; print " 5 - \n"; print " 6 - \n"; print " 7 - \n"; print " 8 - \n"; print "99 - Sortie\n"; print "\nVotre choix -> "; $SAISIE = <STDIN>; chomp($SAISIE); print "#".$SAISIE."#\n"; SWITCH:{ if ($SAISIE =~/1/) {print $I."-".$TAB_POOL[$I][0]."\t" ;last SWITCH} if ($SAISIE =~/2/) {ListeCart() ;last SWITCH} if ($SAISIE =~/3/) {$I = $IG ;last SWITCH} if ($SAISIE =~/4/) {print "Constitution liste des cartouches\n";last SWITCH} if ($SAISIE =~/5/) {print "Marche pôô!\n" ;last SWITCH} if ($SAISIE =~/6/) {$I = $IG;print "\n" ;last SWITCH} if ($SAISIE =~/7/) { for $I (0..$NB_ELEM-1){ print $LIST."\n"; } ;last SWITCH} if ($SAISIE =~/8/) { for $I (0..$NB_ELEM-1){ print $LIST."\n"; } ;last SWITCH} if ($SAISIE =~/98/) {print "Forçage\n" ;last SWITCH} if ($SAISIE =~/99/) {die "Fin\n" ;last SWITCH} } }En revanche, depuis Perl 5.8 pour obtenir les instructions switch et case
use Switch;
Pour les instructions 'switch case', y'a des soucis, car il évalue le code et comme j'ai des / non pairés, ça m$*$~#...
https://linuxfr.org/forums/programmation-perl/posts/switch-en-perl-58-qui-veut-pas-compiler (dernier message)
C'est pour ça que j'ai cherché une solution de secours...