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 :

Perl: problème avec un hashage de tableau


Sujet :

Langage Perl

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Perl: problème avec un hashage de tableau
    Bonjour
    Je souhaite parcourir un très gros tableau de données chiffrées (>10000 lignes), pour lequel chaque colonne présente une entête descriptive (classée par ordre alphanumérique). La structure hashage de tableau semble toute indiquée mais le problème est que je n'arrive pas à déréférencer correctement pour contrôler les valeurs renseignées. Merci de votre aide! Voici ci-dessous comment je procède:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    my @table; my %hash; my $i = 0;
    while (my $line == <FILE>)
         {
         $i++;
         @table = split(/\t/,$line); ### séparateur = tab
         if ($i==1)
         {foreach (@table)  {$hash{$_} = []);}}
         else {foreach (keys(%hash))  {${$hash{$_}->[$i] = shift(@table);}    
         }
    foreach my $key (keys(%hash))
         {foreach my $i (0..$#table)
              {print "${$hash{$key}}->[$i]\t";}}
    mes données ressemblent à ça au départ:
    colA colB colC
    1 1 0
    15 2 0
    etc

    MERCI!

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Ce serait bien de mettre du code parfaitement indenté la prochaine fois.
    merci.
    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
    my @table;
    my %hash;
    my $i = 0;
    while ( my $line == <FILE> ) {
        $i++;
        @table = split( /\t/, $line );    ### séparateur = tab
        if ( $i == 1 ) {
            foreach (@table) {
                $hash{$_} = [] ); # <============ ?????
            }
        }
        else {
                foreach ( keys(%hash) ) {
                    ${ $hash{$_}->[$i] = shift(@table); }; # <============ ?????
                }
                foreach my $key ( keys(%hash) ) {
                    foreach my $i ( 0 .. $#table ) {
                        print "${$hash{$key}}->[$i]\t"; # <============ ?????
                    }
                }
        }
    }

Discussions similaires

  1. problème avec affichage d'un tableau
    Par bandit_debutant dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 29/05/2008, 16h15
  2. Problème avec PtInRegion et un tableau dynamique
    Par mduse dans le forum Langage
    Réponses: 2
    Dernier message: 06/12/2005, 09h29
  3. [Perl] Prob avec reclasssement d un tableau
    Par needles94000 dans le forum Langage
    Réponses: 6
    Dernier message: 17/10/2005, 16h45
  4. [PERL] Problème avec map
    Par LE NEINDRE dans le forum Langage
    Réponses: 9
    Dernier message: 05/10/2005, 09h48
  5. [Perl]problème avec fork
    Par LE NEINDRE dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 23/09/2005, 15h31

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