[PERL]Comparaison: Valeur nulle et zéro

[Fermé]
Signaler
Messages postés
26
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
29 mars 2008
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
Bonjour,

mon problème porte sur une comparaison.
En effet,faire une boucle if avec comme condition qu'une valeur soit définie ou non.

voici un petit extrait de mon code :

if (! $Fic1{$cli})
{
print Sortie "$cli n'existe pas\n";
$cpt ++;
}

Après lecture de Fic1, j'ai une valeur $Fic1{$cli} = 0
pourtant, mon script va entrer dans mon if.
Je voudrais qu'il ne rentre dans mon if QUE si la valeur $Fic1{$cli} est indéfinie.

Je vous met l'extrait de mon debug :

Watchpoint 0: $cli changed:
old value: '00029310'
new value: '29310'
Watchpoint 1: $Fic1{$cli} changed:
old value: undef
new value: '0'
main::(confront_date.pl:65): if (! $Fic1{$cli})
main::(confront_date.pl:66): {
DB<8>
main::(confront_date.pl:67): print Sortie "$cli n'existe pas\n";


Quelle comparaison effectuer pour ne rentrer dans le if que il $Fic1{$cli} n'est pas définie ?

1 réponse

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545
Salut,

condition qu'une valeur soit définie ou non.

Il faut comprendre la différence entre une variable définie ou pas et un teste de verité (boolean) ou context boolean si tu veux.

Pour tester si une variable est définie tu as la fonction defined.

Voici un exemple qui pourra t'eclairer
#!/usr/bin/perl
use strict;use warnings;
my $var;
my $var2;
my $var3;

# contexte chaîne de caractère
$var .= "aaa";
print "$var\n";

# contexte numérique
++$var2;
print "$var2\n";

# avec négation de defined
# si n'est pas défini
if(! defined($var3)){
        print "\$var3 n'est pas défini\n";
}

# avec defined + unless
unless( defined($var3)){
        print "\$var3 n'est pas défini\n";
}
__END__
Exécution
lami20j@debian:~/trash$ perl ccm.pl
aaa
1
$var3 n'est pas défini
$var3 n'est pas défini
--

lami20j
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci