[PERL]-Problème "for if elsif" en menu
Résolu
blux
Messages postés
27832
Statut
Modérateur
-
blux Messages postés 27832 Statut Modérateur -
blux Messages postés 27832 Statut Modérateur -
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...