pour verifier que le texte est un nombre
sub verifier_nombre{
local($texte) = @_;
$texte =(numeric) $texte;
if ($texte =~ /[+-]?(\d+\.\d+|\d+\.|\.\d+)|\d+/){
print $texte;
print "\n";
print " est un nombre";
print "\n"; return(1);
} else { print $texte;
print "\n";
print "ce n'est pas un nombre";
return(0);
}
}
Message édité par may17 le 26-10-2005 à 11:50:09
Publicité
Posté le 26-10-2005 à 11:19:37
Elmoricq
Modérateur
Posté le 26-10-2005 à 11:41:23
Les titres en majuscule sont interdits par la charte du forum, tu devrais l'éditer.
Sinon, pour répondre à ta question, les conversions sont normalement automatiques. Que souhaites-tu faire exactement ?
pospos
Posté le 26-10-2005 à 19:26:27
Hmm ca ressemble pas trop à du perl ca!
on ne peut pas faire de casting en perl (ton "$texte=(numerci)$texte" ).
et ta fonction "remplace_car" fait un peu peur !
tu sais en perl ca peut s'impelmenter comme ca: $text =~ s/,/\./g;
matafan
Posté le 27-10-2005 à 16:45:55
En Perl, les chaines et les nombres c'est la meme chose a partir du moment ou la chaine represente un nombre. Dans ce cas la variable est interpretee comme du texte ou comme un nombre, suivant le contexte.
a partir du moment ou la chaine represente un nombre.
oui, et c'est justement ce que cette personne veut savoir.
par exemple "4564a" sera interpreté comme le chiffre 4564 en contexte de numerique, mais cette personne voudrait rejetter cette chaine
matafan
Posté le 27-10-2005 à 20:40:38
Dans ce cas tu peux faire simplement :
if ($i*1 eq $i) {print "Number\n"} else {print "NaN\n"}
Edit : faudrait faire quelque chose pour les \, c'est penible. Enfin bon y'a un \ devans, les n, quoi.
Message édité par matafan le 27-10-2005 à 20:42:51
pospos
Posté le 28-10-2005 à 21:23:14
ouai pas mal comme idée! simple et propre
reste à voir si il veut etretolérant aux +, "," à la place de ".", "." pour separer les milliers, espaces,etc...
couak
Posté le 30-10-2005 à 11:52:09
ta fonction verifier_nombre peut se faire avec une regex :
sub verifier_nbre
{
my $arg = shift;
return $arg=~/^(\d+)\.?(\d*)$/;
}