IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Effet de bord lors de l'utilisation d'un defined


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut Effet de bord lors de l'utilisation d'un defined
    Bonjour,

    Je bute sur un effet de bord lors de l'utilisation d'un defined.

    Je souhaite vérifier qu'une valeur $H{aa}{bb} existe et est définie. Mais l'exécution m'initialise le "conteneur" $H{aa} (qui contient alors une référence sur une table de hash vide).
    Est-ce bêtement un cas d'initialisation à la volée parce que je teste le contenu de $H{aa}? Dans ce cas une solution serait de tester la définition de $H{aa} puis/&& de $H{aa}{bb}.

    L'exemple ci-dessous résume ce comportement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    use strict;
    my %H = ();
    
    defined($H{aa}) || print "Not defined before\n";
    
    if (defined $H{aa}{bb}) {}
    
    defined($H{aa}) || print "Not defined after\n";
    print $H{aa} . "\n" ;
    L'exécution me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >perl foo.pl
    Not defined before
    HASH(0x183f014)
     
    >
    Merci de votre aide,
    Lac.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par lacryl Voir le message
    Est-ce bêtement un cas d'initialisation à la volée parce que je teste le contenu de $H{aa}? Dans ce cas une solution serait de tester la définition de $H{aa} puis/&& de $H{aa}{bb}.
    Oui.

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Oui.

    --
    Jedaï
    Alors ça c'est de la réponse succinte et précise à la fois .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Eviter les erreurs lors de l'utilisation des compo Tsocket
    Par Coussati dans le forum Composants VCL
    Réponses: 5
    Dernier message: 01/02/2006, 19h14
  2. Erreur lors de l'utilisation de strlwr ?!
    Par MonsieurAk dans le forum C++
    Réponses: 4
    Dernier message: 05/12/2005, 10h22
  3. Effet de bord...
    Par pierre50 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 12/10/2005, 18h11
  4. Effet de bord
    Par Clad3 dans le forum OpenGL
    Réponses: 11
    Dernier message: 04/10/2005, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo