p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre régulier
    Homme Profil pro
    testeur logiciel
    Inscrit en
    juin 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : juin 2007
    Messages : 108
    Points : 70
    Points
    70

    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
    Expert Confirmé Sénior


    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 742
    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 : 1 742
    Points : 4 689
    Points
    4 689
    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.
    La programmation fonctionnelle en Perl : 1. les opérateurs de liste; 2. les fonctions d'ordre supérieur; 3. étendre le langage.
    De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements

    _____
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  3. #3
    Expert Confirmé Sénior


    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 742
    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 : 1 742
    Points : 4 689
    Points
    4 689
    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.
    La programmation fonctionnelle en Perl : 1. les opérateurs de liste; 2. les fonctions d'ordre supérieur; 3. étendre le langage.
    De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements

    _____
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  4. #4
    Membre régulier
    Homme Profil pro
    testeur logiciel
    Inscrit en
    juin 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : juin 2007
    Messages : 108
    Points : 70
    Points
    70

    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, 10h45
  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, 01h32
  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, 15h01
  4. Réponses: 17
    Dernier message: 22/01/2007, 13h34
  5. Réponses: 5
    Dernier message: 18/10/2006, 16h20

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