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 :

Structure qui s'auto-alimente


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [Résolu] Structure qui s'auto-alimente
    Bonjour à tous,

    J'ai un soucis qui peut sembler simple, mais sur lequel je m'arrache les cheveux depuis un moment déjà. Je précise que je connais un peu Perl (principalement en lisant les PDF ici), mais que je suis loin d'être un développeur très performant

    J'ai une structure comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $struc{$nom} = {
    first => [tableau de valeur]
    };
    J'attaque un fichier où chaque ligne contient 2 informations, séparées par ";" :
    • le nom
    • une valeur


    Mon but ici est de parcourir tout mon fichier, extraire le nom, et stocker la valeur dans la structure. Si je trouve plusieurs fois le même nom, je voudrais stocker toutes les valeurs les unes à la suite des autres dans le tableau.

    Exemple de fichier :
    toto;1
    toto;2

    J'attaque la 1ere ligne, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $struc{"toto"} = {
    first => [1]
    };
    2eme ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $struc{"toto"} = {
    first => [1,2]
    };
    Mon code Perl ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $struc{$nom} = {
    first => push(@{$struc{$nom}->{first}},$valeur)
    };
    Ca compile mais le script réagit bizarrement, des fois il ajoute une valeur, d'autres fois non.

    J'ai du rater quelque chose, mais je n'arrive pas à trouver quoi.

    Tout aide est la bienvenue, je suis en train de devenir chauve

  2. #2
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Tu te trompes dans la manière de remplir ta table associative (en la bouclant sur elle-même). Ce que tu veux c'est plutôt ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my %hash;
    while (<>) {
      chomp;
      (my $key, my $value) = split(';');
      push @{$hash{$key}->{first}}, $value;
    }
    Remarque que l'autovivification (Perl crée les structures intermédiares selon tes besoins) c'est drôlement sympa comme méchanisme.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour !

    Effectivement, le petit code que tu m'as donné fait le boulot et le fait bien

    Je vais tâcher de me renseigner un peu sur l'autovivification.

    Merci pour tout !

    Problème résolu

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2006, 10h51
  2. Formulaire PHP qui s'auto-appelle
    Par Aurelien Plazzotta dans le forum Langage
    Réponses: 27
    Dernier message: 28/07/2006, 23h25
  3. [TRANSACT-SQL] clé primaire qui s'auto-incrémente
    Par DonJR dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/05/2006, 11h16
  4. structures qui s'appellent réciproquement
    Par salseropom dans le forum C
    Réponses: 12
    Dernier message: 27/03/2006, 17h40
  5. Un programme qui s'auto-execute
    Par DJ@M's dans le forum C
    Réponses: 6
    Dernier message: 16/10/2005, 13h00

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