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 :

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" );
C'est normal que l'on ne sorte jamais de la boucle do - until, c'est pour testé.

Voilà ce que ca donne dans le shell :

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
Alors, comment testé si le nombre tapé sur STDIN soit bien compris entre -1 et 10 en sachant que celui-ci peut-être à virgule ?

Jjeje007