test pour "uninitialized value"

Le
kurtz_le_pirate
bonjour,

j'utilise le module Filesys::DfPortable pour récupérer les volumes
sur des disques. ça fonctionne plutôt bien sauf lorsqu'un serveur
n'est pas accessible.

je me retrouve avec un "Use of uninitialized value in division (/)
at52"

51 : my $refInfos = dfportable($thisServer);
52 : my $freeSize = ($refInfos->{bfree})/1024/1024;



et je ne sais pas comment tester cette condition :(
undef() ne semble pas convenir.


une idée ?


--
klp
"bug : probleme d'interface entre la chaise et le clavier"
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
kurtz_le_pirate
Le #2188031
kurtz_le_pirate wrote:
bonjour,

j'utilise le module Filesys::DfPortable pour récupérer les volumes
sur des disques. ça fonctionne plutôt bien sauf lorsqu'un serveur
n'est pas accessible.

je me retrouve avec un "Use of uninitialized value in division (/)
at...52"
...
51 : my $refInfos = dfportable($thisServer);
52 : my $freeSize = ($refInfos->{bfree})/1024/1024;
...


et je ne sais pas comment tester cette condition :(
undef() ne semble pas convenir.


une idée ?


laissez tomber... j'ai trouvé.
un tout simple <<if (!defined($refInfos))>>

:( c'est vendredi soir



--
klp
"bug : probleme d'interface entre la chaise et le clavier"

Paul Gaborit
Le #2190451
À (at) Fri, 4 Apr 2008 15:56:52 +0200,
"kurtz_le_pirate"
j'utilise le module Filesys::DfPortable pour récupérer les volumes
sur des disques. ça fonctionne plutôt bien sauf lorsqu'un serveur
n'est pas accessible.

je me retrouve avec un "Use of uninitialized value in division (/)
at...52"
...
51 : my $refInfos = dfportable($thisServer);
52 : my $freeSize = ($refInfos->{bfree})/1024/1024;
...


et je ne sais pas comment tester cette condition :(
undef() ne semble pas convenir.


undef ne peut pas convenir puisque ce n'est pas une condition ! ;-)

Par contre 'defined' me semble tout à fait convenir :

if (defined $refInfos and defined $refInfos->{bfree}) {
my $freeSize = ($refInfos->{bfree})/1024/1024;
} else {
warn "Pb !n";
}

A priori (selon la doc), seul le premier test (sur $refInfos) est
utile.


--
Paul Gaborit - Perl en français -
espie
Le #2193601
In article Paul Gaborit
undef ne peut pas convenir puisque ce n'est pas une condition ! ;-)

Aparte: d'ailleurs, c'est bizarre, ca serait bien dans l'esprit du

langage que ca marche quand meme.

Paul Gaborit
Le #2193591
À (at) Fri, 4 Apr 2008 15:27:30 +0000 (UTC),
(Marc Espie) écrivait (wrote):
In article Paul Gaborit
undef ne peut pas convenir puisque ce n'est pas une condition ! ;-)

Aparte: d'ailleurs, c'est bizarre, ca serait bien dans l'esprit du

langage que ca marche quand meme.


Disons que ça marche :

my $t;
print "not definedn" if $t eq undef;
print "not definedn" if $t == undef;
$t = 1;
print "definedn" if not $t eq undef;
print "definedn" if not $t == undef;

Mais Perl n'est quand même pas content et crie (avec raison) si on
utilise 'use warnings' ou l'option '-w'.

Il vaut donc mieux utiliser 'defined'...

--
Paul Gaborit - Perl en français -

Publicité
Poster une réponse
Anonyme