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 :

tableau de tables de hash référence perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut tableau de tables de hash référence perl
    bonjour,

    voici ma fonction retournant un tableau de tables de hashages:
    sub fonc2{
    my @a=();
    my %c={"a"=>"1","b"=>"2","c"=>"3"};
    my %d={"d"=>"4","e"=>"5","f"=>"6"};
    my %e={"g"=>"7","h"=>"8","i"=>"9","j"=>"10"};
    $a[0]=\%c;
    $a[1]=\%d;
    $a[2]=\%e;

    return @a;
    }

    lorsque je veux récupérer @a je fais:
    @b=fonc2();
    je veux récupérer mes tables de hash je ne sais pas comment faire j'ai tout essayé:
    %h=%{$b[0]} ne marche pas
    %h=%{%{$b[0]}} non plus
    %h=%{${$b[0]}} non plus
    %h=%{%{@b[0]}} non plus

    j'ai meme essayé d'enlever les références de ma fonction:

    $a[0]=%c;
    $a[1]=%d;
    $a[2]=%e;
    dans la table b il y a des symboles bizarres :1/81/81/8
    les tables de hashage sont vides
    comment faire
    ca fait 2 jours que je cherche
    merci par avance

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Par défaut
    C'est nromal que tu n'es rien, tes varirable %hash... elles sont détruite à la fin de ta fonction. N'utilise pas de référence pour ca. Mets directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     %{$a[0]}=%hash1;....

  3. #3
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Citation Envoyé par danathane Voir le message
    C'est nromal que tu n'es rien, tes varirable %hash... elles sont détruite à la fin de ta fonction. N'utilise pas de référence pour ca. Mets directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     %{$a[0]}=%hash1;....
    ah oki il faut le faire à l'envers

    sub fonc2{
    my @a=();
    my %c=("a"=>"1","b"=>"2","c"=>"3");
    my %d=("d"=>"4","e"=>"5","f"=>"6");
    my %e=("g"=>"7","h"=>"8","i"=>"9","j"=>"10");
    %{$a[0]}=%c;
    %{$a[1]}=%d;
    %{$a[2]}=%e;

    return @a;
    }

    merci à tous les 2

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Pourrais-tu utiliser les balises codes ? Merci.

    Si ce n'est déjà fait, tu devrais utiliser les pragma strict et warnings dans ton script.
    Erreur renvoyée par le pragma strict
    Reference found where even-sized list expected at test.pl line 10.
    Tu dois utiliser des parenthèses et non des crochets quand tu initialises tes hash :

    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
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    
    
    sub fonc2 {
        my @a = ();
        my %c = ( a => 1, b => 2, c => 3 );
        my %d = ( d => 4, e => 5, f => 6 );
        my %e = ( g => 7, h => 8, i => 9, j => 10 );
        $a[0] = \%c;
        $a[1] = \%d;
        $a[2] = \%e;
    
        return @a;
    }
    
    my @a = &fonc2;
    
    my %h1 = %{$a[0]};
    nb : les doubles quotes autour de tes clés et valeurs semblent inutiles sauf si tu veux que tes valeurs numériques soient considérées comme des chaînes de caractères.

  5. #5
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut re tableau de tables de hash
    merci,
    j'ai deja essayé avec ce code et mes tables de hashage s'affichent vides

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Le script plus haut fonctionne ... Quels messages d'erreur as-tu en utilisant strict et warnings? Comment passes-tu tes valeurs aux hash?

  7. #7
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Tu dois utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my @a = &fonc2;
     
    my %h1 = %{$a[0]};
    Comme je l'ai mis dans mon premier message.

  8. #8
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Tu dois utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my @a = &fonc2;
     
    my %h1 = %{$a[0]};
    Comme je l'ai mis dans mon premier message.
    merci ca marche comme ca
    ca change quoi de mettre le & devant l'appel de fonction?

  9. #9
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Le script plus haut fonctionne ... Quels messages d'erreur as-tu en utilisant strict et warnings? Comment passes-tu tes valeurs aux hash?
    je n'avais pas d'erreur mais une ligne vide quand jessayais d'afficher les éléments du hashtable

Discussions similaires

  1. Thread Perl : Partager un tableau de tables de hash
    Par azertyter dans le forum Langage
    Réponses: 1
    Dernier message: 03/04/2014, 22h14
  2. Parcourir un tableau de table de hash
    Par ninititine dans le forum Langage
    Réponses: 9
    Dernier message: 04/06/2009, 21h03
  3. Table de hash limité ??
    Par elbrujo2323 dans le forum Langage
    Réponses: 14
    Dernier message: 17/01/2008, 21h32
  4. hash -> références
    Par mauroyb0 dans le forum Langage
    Réponses: 7
    Dernier message: 14/06/2006, 20h29
  5. Tables de hash
    Par miss8 dans le forum C
    Réponses: 2
    Dernier message: 16/11/2002, 17h44

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