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 :

Problème de compréhension avec un HASH


Sujet :

Langage Perl

  1. #1
    Membre actif
    Homme Profil pro
    testeur logiciel
    Inscrit en
    Juin 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : testeur logiciel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 125
    Points : 211
    Points
    211
    Par défaut Problème de compréhension avec un HASH
    Bonjour,

    Je suis nouveau sur Perl et j'ai du mal à comprendre ce code.

    Ci-dessous l'appel de la fonction que je souhaite utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bugzilla::Hook::process('bug_end_of_create_validators', { params => $params });
    Ci-dessous la fonction en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    sub bug_end_of_create_validators {
        my ($self, $args) = @_;
     
        # This code doesn't actually *do* anything, it's just here to show you
        # how to use this hook.
        my $bug_params = $args->{'params'};
     
        # Uncomment this line below to see a line in your webserver's error log
        # containing all validated bug field values every time you file a bug.
        # warn Dumper($bug_params);
     
        # This would remove all ccs from the bug, preventing ANY ccs from being
        # added on bug creation.
        # $bug_params->{cc} = [];
    }
    Si dans cette fonction je fais:
    J'obtiens:
    HASH(0x293F0d8)
    J'en conclu donc que c'est un HASH mais je ne sais pas ce qu'il contient.

    En m'aidant de la FAQ je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	foreach my $clef ( keys %bug_params )
    	{
    		print "$clef : $bug_params{$clef}\n";
    	}
    Mais j’obtiens toujours:
    HASH(0x293F0d8)
    Je ne sais pas comment faire pour connaitre le contenu de cette variable.

    Avez-vous une idée?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    C'est une référence à un hash.

    Tu peux utiliser le module Data:umper pour voir le contenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    use Data::Dumper;
     
    # ...
     
    print Dumper $bug_params;


    Ou, sous le debugger, "x $bug_params".

    Ou, sinon, il faut déreférencer la référence avec le sigil %devant le signil $.

    EDIT: j'ai oublié de préciser le plus important: compte tenu du contexte (utilisation de module), il y a certainement une méthode pour accéder à tes données, et c'est certainement la meilleure solution.

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bundy*Al Voir le message

    J'en conclu donc que c'est un HASH mais je ne sais pas ce qu'il contient.

    En m'aidant de la FAQ je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	foreach my $clef ( keys %bug_params )
    	{
    		print "$clef : $bug_params{$clef}\n";
    	}
    Comme c'est une référence sur un hash, tu dois simplement changer ton code comme suit (par exemple):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	foreach my $clef ( keys %$bug_params )
    	{
    		print "$clef : $$bug_params{$clef}\n";
    	}
    Mais encore une fois, il y a certainement une méthode d'accès à tes données.

  4. #4
    Membre actif
    Homme Profil pro
    testeur logiciel
    Inscrit en
    Juin 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : testeur logiciel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 125
    Points : 211
    Points
    211
    Par défaut
    Merci pour ces explications, je serai comment afficher une référence à un hash maintenant.
    Oui j'ai finalement réussi a accéder aux données par un autre moyen qui finalement est beaucoup plus simple.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/11/2012, 11h45
  2. Problème de compréhension avec les DIV
    Par akaii dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/02/2010, 02h32
  3. Problème de compréhension avec MoviClip
    Par jpboogie dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 11/04/2009, 16h01
  4. Réponses: 17
    Dernier message: 22/01/2007, 14h34
  5. Réponses: 5
    Dernier message: 18/10/2006, 17h20

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