Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Convertir une chaîne en entier sans avertissement

3 réponses
Avatar
Edwin Vancleef
Je voudrais faire ceci :

$i = int( $chaine );

Lorsque la chaîne est impossible à convertir en entier, $i reçoit zéro, et cela
me convient parfaitement. Par contre, ce que je n'aime pas, c'est que le script
génère un avertissement lorsque la conversion est impossible. Or, je ne veux
pas de cet avertissement, étant donné que la valeur retournée me convient très
bien. Je ne veux pas non plus désactiver les avertissements, car ils me
permettent de trouver des erreurs... Je suis chiant... :]

3 réponses

Avatar
DeuZa
Edwin Vancleef wrote:
Je voudrais faire ceci :

$i = int( $chaine );

Lorsque la chaîne est impossible à convertir en entier, $i reçoit zéro, et cela
me convient parfaitement. Par contre, ce que je n'aime pas, c'est que le script
génère un avertissement lorsque la conversion est impossible. Or, je ne veux
pas de cet avertissement, étant donné que la valeur retournée me convient très
bien. Je ne veux pas non plus désactiver les avertissements, car ils me
permettent de trouver des erreurs... Je suis chiant... :]


Bonjour,

Je ne vois pas le probleme ...
Plus d'infos seraient bienvenue :)

cat int.pl
#/usr/bin/perl -w
use strict;

my $test = "2";
my $i = int ( $test );
print "RESULTAT : $in";

my $test2 = "AAA";
my $j = int ( $test2 );
print "RESULTAT : $jn";

Me donne bien :

perl int.pl
RESULTAT : 2
RESULTAT : 0


Est ce que l'erreur ne viendrait pas plutot d'une reutilisation de $i
qui n'est pas declare par "my" ???

++
2A

Avatar
DeuZa
#/usr/bin/perl -w


Erf erf :)

Sans le ! t'as plus d'erreur mdr ;)
(Il ne doit pas utiliser le switch -w)

Je regarderais du cote des regexps pour filtrer avant le int ...
(Mais je manque d'inspiration)

#!/usr/bin/perl -w
use strict;

my $nombre = "AAA";
#my $nombre = "123234431.123234455";
my $i;

if ($nombre =~ /^[0-9]*$|^[0-9]*.[0-9]*$/){
## Attention, ne va matcher que "1234" ou "123.456" uniquement
print "Ok c'est un nombre ...n";
$i = int( $nombre);
}else{
print "KO c'est autre chose ...n";
$i = 0;
}

print "Valeur de $i = $in";

Il y a surement moyen de faire plus propre !
(Du cote de d{} peut etre ?)

En esperant que ca puisse aider ...

++
2A

Avatar
Nicolas George
Edwin Vancleef wrote in message
:
Je voudrais faire ceci :

$i = int( $chaine );

Lorsque la chaîne est impossible à convertir en entier, $i reçoit zéro, et
cela me convient parfaitement. Par contre, ce que je n'aime pas, c'est que
le script génère un avertissement lorsque la conversion est impossible.
Or, je ne veux pas de cet avertissement, étant donné que la valeur
retournée me convient très bien. Je ne veux pas non plus désactiver les
avertissements, car ils me permettent de trouver des erreurs... Je suis
chiant... :]


Tu peux faire ceci :

my $i = do { no warnings; int("foo"); };

Note : tu fais des lignes trop longues, il faut descendre un peu en dessous
de 80, pour permettre un ou deux niveaux de citation.