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 hash


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Par défaut tableau de hash
    bonjour,

    j'essaye de passer par les tableaux de hash...

    pour un identifiant donné, j'ai plusieurs valeurs et j'aimerais au fianl avoir pour identifiant la somme de ces valeurs
    aaa 1
    aaa 25
    aaa 50
    bbb 10
    bbb 30

    au final
    aaa 76
    bbb 40

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my %hash=();
    open (U, "< xxx") or die("Impossible!");
    while( my $ligne=<U>){
    	if($ligne =~ /(.+)\t([0-9]+)$/){
    	    %hash= ("$1"=>$2);
    	    foreach my $identifiant (keys %hash){
    		print("$identifiant: $hash{$identifiant}\n");
    	    }
    }
    je récupère bien mes identifiants unique ($identifiant) mais je bloque pour obtenir la somme. Je pense au tableau de hash...mais je n'arrive pas à matérialiser

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    my %hash=();
    open (U, "< xxx") or die("Impossible!");
    while (my $ligne = <U>) {
      if (my ($cle, $valeur) = $ligne =~ /(.+)\t([0-9]+)$/) {
        $hash{$cle} += $valeur;
      }
    }
    foreach my $identifiant (keys %hash){
      print("$identifiant: $hash{$identifiant}\n");
    }
    Il y avait plusieurs erreurs à corriger

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Par défaut
    un grand Merci Philou

    Je ne suis pas super à l'aise avec les hash et donc je détaille encore!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    my %hash=();
    open (U, "< xxx") or die("Impossible!");
    while (my $ligne = <U>) {
      if (my ($cle, $valeur) = $ligne =~ /(.+)\t([0-9]+)$/) {
    my $cle=$1;
    my $valeur=$2;
        $hash{$cle} += $valeur;
      }
    }
    foreach my $identifiant (keys %hash){
      print("$identifiant: $hash{$identifiant}\n");
    }

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    C'est ligne sont à la fois superflues, mais personnellement, je les déconseille (usage des variables $1 et $2 à effet de bord) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $cle=$1;
    my $valeur=$2;
    L'affectation de $cle et $valeur se fait "automagiquement" avec ce type d'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($cle, $valeur) = $chaine =~ /(...)...(...)/;
    Par ailleurs, ton écriture devrait générer une warning si tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use strict;
    use warnings;
    ce qui est fortement recommandé.

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

Discussions similaires

  1. Tableau de hash
    Par danathane dans le forum Langage
    Réponses: 6
    Dernier message: 03/11/2008, 14h55
  2. Problème de remplissage d'un tableau de hash
    Par witch dans le forum Langage
    Réponses: 15
    Dernier message: 10/06/2008, 13h45
  3. [D7] Tableau associatif (hash, associative array)?
    Par fredtheman dans le forum Delphi
    Réponses: 3
    Dernier message: 21/06/2006, 18h42
  4. Problème de récupération de tableau dans hash DBM
    Par siaoly dans le forum Langage
    Réponses: 1
    Dernier message: 01/05/2006, 16h00
  5. Tableau de hash to hash
    Par shwin dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2005, 14h17

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