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 avec un HASH


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Par défaut Problème avec un HASH
    Salut,

    Deux fois aujourd'hui ?! Je suis en forme ^^

    Ma question concerne les hash.
    Je souhaite ajouter des données à un hash sans redéfinir celui ci entièrement.

    Mais plutôt qu'un long discours voici mon code suivit du message d'erreur associé, ce message est assez clair mais je n'arrive pas trouver la bonne syntaxe.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    my %hash =	(
    		personne =>	{
    						nom		=> 'toto',
    						prenom	        => 'tata',
    						age		=> '19',
    					},
    		film	=>	{
    						titre		=> 'Virgin suicide',
    						realisateur     => 'Sofia Coppola',
    						annee		=> '27-09-2000',
    						casting		=> 'Kirsten Dunst, James Woods, Kathleen Turner',
    					},
    		etudie	=>	'bioinformatique',
    			);
     
     
     
     
    push(@{\%hash->{personne}}, "viande => 'boeuf',");
     
    my $result = $es->index(
    	index	=> 'toto',
    	type	=> 'tata',
    	id      => '1',
    	data	=> \%hash    #Cette ligne doit être comme ça pour que l'indexation fonctionne, n'accepte pas les $var
    );
    Message d'erreur :
    Using a hash as a reference is deprecated at testUpdateViaHash.pl line 19.
    Not an ARRAY reference at testUpdateViaHash.pl line 19.

    J'ai changé les numéros de ligne du message pour que cela corresponde à la numérotation ici.

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $hash{"personne"}{"viande"} = 'boeuf';
    ne te convient pas ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Par défaut
    Hum au passage quelle est la différence entre (Le point important de mon problème selon moi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $hash = {};
    # et
    %hash =();
    # ?
    Sinon je souhaite rajouter des éléments dans mon hash existant. Et je souhaite pouvoir rajouter aussi bien une structure qu'un couple clef/valeur dans une structure. cf "en gros" je vous ai mis ce que j'arrivais à faire et ce que je n'arrive pas à faire.

    Je ne sais pas utiliser le $hash et je ne peux, pour la partie "index", qu'utiliser la référence d'un hash sous forme \%hash

    Je sais rajouter des couples/clefs valeur dans le 1er niveau mais pas dans les autres, c'est à dire que je parviens à ajouter des couples au même niveau que la structure personne et film mais pas à l'intérieur de ces structures. Je ne parviens pas non plus à créer de nouvelles structures.



    En gros :
    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
    16
    17
    18
    19
    20
    21
     
    my %hash= (
    	personne =>{
    		nom		=> 'toto',
    		prenom	        => 'tata',
    		age		=> '19',
    		etudie	=>	'bioinformatique',
    	},
    	film	=>{
    		titre		=> 'Virgin suicide',
    		realisateur     => 'Sofia Coppola',
    		annee		=> '27-09-2000',
    		casting		=> 'Kirsten Dunst, James Woods, Kathleen Turner',
     
     
    		jeNeSaisPas	=> 'rajouter ici'
    	},
    	jeSaisRajouter : 'ici',
     
    	jeNeSaisPas	=>	{	creer => 'cette structure', },
    );

  4. #4
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    tu crées une référence à un hash, que tu peux accéder en le déférençant
    ou sont équivalents et créent un hash vide

    ensuite tu as des hash imbriqués, donc tu imbriques les clés comme je l'ai indiqué plus haut, tu peux mettre en données ce que tu veux:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    my %hash= (
    	personne =>{
    		nom		=> 'toto',
    		prenom	        => 'tata',
    		age		=> '19',
    		etudie	=>	'bioinformatique',
    	},
    	film	=>{
    		titre		=> 'Virgin suicide',
    		realisateur     => 'Sofia Coppola',
    		annee		=> '27-09-2000',
    		casting		=> 'Kirsten Dunst, James Woods, Kathleen Turner',
    	}
    );
     
    # rajouter une valeur dans les hash existant
    $hash{"film"}{"avis"} = "jamais vu";
     
    # rajouter un hash entier, par référence
    my %autre_hash = (
    	toto => {
    		titi => "tata",
    		tutu => "tete"
    	}
    );
    $hash{"autre_données"} = \%autre_hash;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 31
    Par défaut
    Salut,

    Tu as essayé:
    $hash{niveau1}{niveau2}{niveau3} = valeur;

    soit

    $hash{personne}{viande}{couleur} = rouge;


    Comme le précise Gardyen, tu peux aussi ajouter à ton hash une référence à une data structure (un hash ou même un tableau)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    my %structure = (
                                viande => 
                                               {couleur => rouge}
    );
     
    my %structure2 = (
                                viande => 
                                               [rouge,blanche]
    );
     
    $hash{personne} = \%structure2  #pour avoir la structure avec la liste

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Par défaut
    Je vous remercie de vos réponses, j'ai bien compris et j'ai été regarder le tuto sur les références. Je parviens à faire ce que je veux. \o/

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

Discussions similaires

  1. Problème avec un hash de tableau de hash
    Par hy00ga dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2011, 15h10
  2. [MySQL] problème avec la récupération de données hashées avec l'algorythme md5 dans ma BD
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/07/2011, 08h21
  3. Safari problème avec hash et position fixed
    Par Bill_Bob dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 16/05/2011, 17h30
  4. Problème avec un hash
    Par Crosser02 dans le forum Langage
    Réponses: 6
    Dernier message: 25/04/2009, 18h14
  5. Problème avec un hash
    Par SkyBioSS dans le forum Langage
    Réponses: 2
    Dernier message: 14/03/2008, 19h55

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