-
range iterator error
Bonjour,
En essayant d'effectuer une commande " for(X .. Y) " je recois une erreur de range iterator. Apparemment Y est trop grand. Ce qui resout ce probleme est de rajouter un "0" devant 'X' & 'Y'.
Est ce qqu'un pourrait m'expliquer ce qu'est le range iterator error et pourquoi le fait de rajouter '0' resout le probleme ??
Merci.
-
J'aimerais bien que tu nous dises avec quels nombres tu obtiens cette erreur.
Le "range operator" est le petit ".." qui construit la séquence des nombres de X à Y. Pourrais tu nous donner l'énoncé exact de l'erreur ?
Par ailleurs rajouter un 0 devant tes nombres n'est pas une bonne idée : ça les mets en base octale.
--
Jedaï
-
Je travaille en Hexa, mais la je te donne les valeurs en decimal:
for($X..$Y){..} #$X=2147487280 && $Y=2147487319
L'erreur que je recois est : Range iterator outside integer range .
Apres une petite recherche sur internet j'ai trouve qu'afin que cela passe il faut rajouter un "0" (ils appellent ca magical string !?).
Donc ma ligne ressemble a ca:
for("0".$X.."0".$Y) .....
Tout marche correctement. J'aurais voulu savoir si qqu'un pourrait m'expliquer ceci??
Merci.
-
Si tu rajoutes un "0" comme ça, ça va. C'est parce que Perl traite alors tes nombres comme des chaînes de caractères et que ++ est capable d'"incrémenter" des chaînes de caractères d'une longueur arbitraire et que cet incrémentation correspond à l'incrémentation normale sur les entiers pour les chaînes qui en représentent.
Essaye :
Code:
for ( 'a' .. 'ba' ) { print "$_\n" }
pour voir un exemple d'incrémentation de chaîne.
--
Jedaï