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

test pour "uninitialized value"

4 réponses
Avatar
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 (/)
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 ?


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

4 réponses

Avatar
kurtz_le_pirate
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"

Avatar
Paul Gaborit
À (at) Fri, 4 Apr 2008 15:56:52 +0200,
"kurtz_le_pirate" écrivait (wrote):
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
espie
In article ,
Paul Gaborit <Paul.Gaborit+ wrote:
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.

Avatar
Paul Gaborit
À (at) Fri, 4 Apr 2008 15:27:30 +0000 (UTC),
(Marc Espie) écrivait (wrote):
In article ,
Paul Gaborit <Paul.Gaborit+ wrote:
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>