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 :

Création dynamique de données


Sujet :

Langage Perl

  1. #1
    Yux
    Yux est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 105
    Points : 74
    Points
    74
    Par défaut Création dynamique de données
    Salut,

    Je voulais savoir s'il existait une méthode pour déclarer des variables au cours de l'exécution d'un programme. Concrètement, j'ai besoin de créer dans un programme un hachage de hachages. J'utilise donc pour ce faire les références. Le problème est que le nombre de hachages contenu dans le hachage n'est pas connu avant l'exécution, il dépend des paramètres d'un fichier de configuration. Je vois donc mal comment déclarer préalablement mes références de façon explicite...

    Si quelqu'un pouvait m'éclairer là-dessus ou me proposer un mécanisme de contournement...

    Merci

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Une table de hachage est, par définition, une structure dynamique.

    On y ajoute ce qu'on veut, comme on veut, quand on veut. Même des références, quitte à utiliser des références anonymes (sorte d'allocation dynamique, finalement).

    Il n'y a donc aucune raison pour que ça ne convienne pas à ton besoin.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Yux
    Yux est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 105
    Points : 74
    Points
    74
    Par défaut
    Merci pour ta réponse, 2Eurocents. Je vais voir ça, je ne vois pas très clairement comment initialiser le hachage avec des références anonymes...

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Crée une liste associative (hash) vide.

    Place dans le hachage %hash, en correspondance avec clef1, une référence anonyme à un hachage vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $hash{clef1}{clef2} = "valeur";
    Range valeur associée à clef2 dans le hachage anonyme situé en clef1 dans %hash.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Yux
    Yux est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 105
    Points : 74
    Points
    74
    Par défaut
    Merci 2Eurocents, j'ai toutes les informations qu'il me fallait

    Je passe le topic en résolu.

  6. #6
    Yux
    Yux est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 105
    Points : 74
    Points
    74
    Par défaut
    Oups, juste une dernière question : j'ai initialisé mes données de la façon que tu as indiquée, mais je ne parviens pas à y accéder ensuite. Concrètement - pour reprendre ton exemple, si je veux parcourir l'ensemble des couples clé/valeur de l'un des hachages contenu dans le hachage %hash, comment dois-je m'y prendre ?

    J'ai testé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach my $a (keys(%hash))
    {
            foreach my $b (keys($hash{$a}))
            {
                    print "Clé: $hash{$a} valeur : $hash{$a}{$b}\n";
            }
    }
    L'interpréteur me signale que l'argument de keys doit être un hachage dans la seconde boucle, pas un élément de hachage. J'avoue que je ne vois pas trop...

  7. #7
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Essaies comme ça :
    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;
     
    my %hash = ();
     
    $hash{toto}={};
    $hash{titi}={};
     
    $hash{toto}{a}="aaa";
    $hash{toto}{b}="bbb";
    $hash{toto}{c}="ccc";
    $hash{titi}{a}="abc";
    $hash{titi}{b}="bca";
    $hash{titi}{c}="cab";
     
    foreach my $externe (keys (%hash)) {
      foreach my $interne (keys (%{$hash{$externe}})) {
        print "$externe/$interne -> $hash{$externe}{$interne}\n";
      }
    }
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  8. #8
    Yux
    Yux est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 105
    Points : 74
    Points
    74
    Par défaut
    Merci pour tout->Eurocents

    Tout fonctionne au poil !

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

Discussions similaires

  1. Création dynamique de base de données
    Par bachirghazaouet dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 16/09/2013, 11h55
  2. Réponses: 1
    Dernier message: 18/12/2006, 00h26
  3. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07
  4. TWebBrowser et création dynamique
    Par BakaOnigiri dans le forum Web & réseau
    Réponses: 2
    Dernier message: 01/09/2002, 10h53
  5. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36

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