Salut a tous,
J'aimerai testé si un nombre taper sur STDIN rentre bien dans une certaine fourchette.
Le seul problème c'est que le nombre peut-etre aussi fractionnel (comprendre à virgule) et c'est la que ca passe pas avec le module Number::Range que j'ai trouvé sur CPAN.
Voilà mon script avec Number::Range :
C'est normal que l'on ne sorte jamais de la boucle do - until, c'est pour testé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #!/usr/bin/perl use strict; use warnings; use Number::Range; my ($s_q_audio); my ($q_audio); do { print " Tapez un chiffre compris entre '-1' et '10' : "; $q_audio = <STDIN>; chomp $q_audio; my $range = Number::Range->new("-1.00..10.00"); if ( $range->inrange( $q_audio ) ) { print "OK\n"; $s_q_audio = "20"; } else { print "Pas bon :(\n"; $s_q_audio = "20"; } } until ( $s_q_audio eq "10" );
Voilà ce que ca donne dans le shell :
Alors, comment testé si le nombre tapé sur STDIN soit bien compris entre -1 et 10 en sachant que celui-ci peut-être à virgule ?Tapez un chiffre compris entre '-1' et '10' : -1
OK
Tapez un chiffre compris entre '-1' et '10' : 10
OK
Tapez un chiffre compris entre '-1' et '10' : 2.75
Pas bon
Jjeje007
Partager