ATOI |
Alpha à entier |
|---|---|
Perl |
POSIX |
Syntaxe
| sub POSIX::atoi($expression); |
Paramètres
| Nom | Description |
|---|---|
| $expression | Ce paramètre permet d'indiquer la chaîne de caractères à convertir |
Description
Cette fonction convertie une chaîne de caractères en une valeur entière.
Remarques
- Convertit une chaîne en entier selon la norme C : La fonction POSIX::atoi($expression) permet de convertir une chaîne de caractères représentant un entier en une valeur entière selon les règles de la fonction C standard atoi(). Elle est donc utile pour transformer une entrée textuelle en valeur numérique exploitable.
- Ignore les caractères non numériques après l'entier : Comme en langage C, atoi s'arrête à la première portion invalide de la chaîne. Par exemple, "123abc" sera converti en 123, et "abc123" retournera 0. Cela peut être piégeux si la chaîne n'est pas préalablement validée.
- Ne génère pas d'erreur en cas de conversion invalide : Si la chaîne ne commence pas par un chiffre, atoi retourne simplement 0, sans déclencher d'avertissement ni d'exception. Cela peut introduire des erreurs silencieuses dans les programmes si l'on ne vérifie pas les données avant conversion.
- Utilise la base décimale implicitement : La conversion effectuée par atoi est toujours en base 10. Il ne tient pas compte de préfixes comme 0x pour l'hexadécimal ou 0b pour le binaire, contrairement à int() dans certains langages modernes. Toute interprétation spéciale doit être faite manuellement.
- Moins flexible que les conversions Perl natives : En Perl, les chaînes sont automatiquement converties en nombres si elles sont utilisées dans un contexte numérique. L'usage de atoi est donc rarement nécessaire dans les scripts classiques, sauf pour des raisons de clarté ou de conformité à POSIX.
- Particulièrement utile en interopérabilité avec des bibliothèques C : POSIX::atoi peut être utile dans les interfaces Perl/C (via XS, Inline::C,...), lorsqu'on veut émuler précisément le comportement de la fonction atoi() en C, en respectant ses tolérances et ses limites.
- N'effectue pas de vérification sur la taille de l'entier : Contrairement à certaines fonctions comme strtol() en C, atoi() (et donc POSIX::atoi) n'émet pas d'erreur en cas de dépassement de capacité de l'entier. En Perl, cela est généralement sans conséquence, car les entiers sont dynamiquement dimensionnés, mais c'est bon à savoir pour le portage.
- Non adaptée à une validation stricte de l'entrée utilisateur : Si on souhaite vérifier qu'une chaîne contient uniquement un entier valide, atoi n'est pas suffisant. Il est recommandé d'utiliser une expression régulière (par exemple /^\d+$/) pour une validation stricte avant d'utiliser la valeur numériquement.
Voir également
Langage de programmation - Fonction C pour Linux - atoi
Dernière mise à jour : Dimanche, le 18 octobre 2015