Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1667 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Un array de Hashes UP: trier ce array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Un array de Hashes UP: trier ce array

n°472366
burgergold
5$? va chez l'diable!
Posté le 30-07-2003 à 18:41:34  profilanswer
 

En gros, j'ai plusieurs enregistrements qui ont plusieurs champs
 
du genre, 1 enregistrement comprend un id, une position, un Ampérage
 
jpensais me faire un hashes avec comme clé id, position, amp
 
mais vu que jai plusieurs enregistrement, j'voudrais bien pouvoir les lire tous en 1 fois, fermer le fichier et ensuite faire mes boucles de traitement plutot que de lire 1 enregistrement, faire un traitement, relire un enregistrement...
 
vous voyez?


Message édité par burgergold le 13-08-2003 à 18:53:30
mood
Publicité
Posté le 30-07-2003 à 18:41:34  profilanswer
 

n°472383
pospos
Posté le 30-07-2003 à 19:03:35  profilanswer
 

Hé bien tu peux faire un tableau de reference de hash:
 

Code :
  1. my @records;
  2. while(<IN> ) {
  3.   my ($id, $bidule, $machin) = split...
  4.  
  5.   push @records, {
  6.     id     => $id,
  7.     bidule => $bidule,
  8.     machin => $machin,
  9.   };
  10. }
  11. foreach my $record (@records) {
  12.   print $record->{id},"\n";
  13.   ...
  14. }

n°472554
noldor
Rockn'roll
Posté le 30-07-2003 à 21:44:02  profilanswer
 

pospos a écrit :

Hé bien tu peux faire un tableau de reference de hash:
 

Code :
  1. my @records;
  2. while(<IN> ) {
  3.   my ($id, $bidule, $machin) = split...
  4.  
  5.   push @records, {
  6.     id     => $id,
  7.     bidule => $bidule,
  8.     machin => $machin,
  9.   };
  10. }
  11. foreach my $record (@records) {
  12.   print $record->{id},"\n";
  13.   ...
  14. }




 
une fois qu'on a le tableau de hash, comment on récupère les clés ?? (les différents id par exemple)


---------------
http://runnerstats.net
n°472688
pospos
Posté le 31-07-2003 à 01:16:11  profilanswer
 

ben comme je te l'ai ecrit avec le foreach
Tu est obligé de parcourir tout le tableau
 
foreach my $record (@records) {
   print $record->{id};
}

n°472779
noldor
Rockn'roll
Posté le 31-07-2003 à 09:27:37  profilanswer
 

pospos a écrit :

ben comme je te l'ai ecrit avec le foreach
Tu est obligé de parcourir tout le tableau
 
foreach my $record (@records) {
   print $record->{id};
}

en fait, je me suis trompé
je voulais demander : comment on récupère id, bidule et machin ?

n°472941
pospos
Posté le 31-07-2003 à 11:18:31  profilanswer
 

ben c'est excatement pareil:
 
my $i;
foreach my $record (@records) {
  $i++;
  print "Ligne $i: id=",$record->{id}, " bidule=", $record->{bidule}, " machin= ", $record->{machin},"\n";
}

n°472965
noldor
Rockn'roll
Posté le 31-07-2003 à 11:24:07  profilanswer
 

pospos a écrit :

ben c'est excatement pareil:
 
my $i;
foreach my $record (@records) {
  $i++;
  print "Ligne $i: id=",$record->{id}, " bidule=", $record->{bidule}, " machin= ", $record->{machin},"\n";
}  

je me suis mal exprimé : ce qui m'intéresse de récupérer, ce ne sont pas les valeurs de hash, mais les clés

n°472996
pospos
Posté le 31-07-2003 à 11:37:02  profilanswer
 

bon
c la valeur que tu recupere la!
 
en gors:
si $record est une reference vers une hash, alors $record->{cle} te donne la valeur
 
en gros c'est $record = \%hash
donc $record->{cle} == $hash{cle}
tu vois?

n°473023
noldor
Rockn'roll
Posté le 31-07-2003 à 11:56:29  profilanswer
 

pospos a écrit :

bon
c la valeur que tu recupere la!
 
en gors:
si $record est une reference vers une hash, alors $record->{cle} te donne la valeur
 
en gros c'est $record = \%hash
donc $record->{cle} == $hash{cle}
tu vois?

c'est bon j'ai trouvé
merci :jap:

n°486234
burgergold
5$? va chez l'diable!
Posté le 13-08-2003 à 18:53:12  profilanswer
 

up du topic
 
je cherche maintenant à sorter ce array selon les id, ensuite les positions
 
avec une db et un select ca serait facile, mais faut jtravaille avec un fichier
 
alors j'ai mon array @records, dans lequel j'ai les hashes id, position, num, amp
 
jveux sorter le tout en ordre de id, puis ordre de position
 
ya moyen de le faire avec un sort ou faut jme fasse mon propre systeme de tri?

mood
Publicité
Posté le 13-08-2003 à 18:53:12  profilanswer
 

n°486642
pospos
Posté le 14-08-2003 à 01:35:15  profilanswer
 

il faut faire une fonction de tri
 
regarde ce topic, le probleme est similaire:
http://forum.hardware.fr/forum2.ph [...] subcat=392

n°486673
Taz
bisounours-codeur
Posté le 14-08-2003 à 07:25:10  profilanswer
 

ça vous ennuie de faire des titres en français?

n°486860
d_wrk
Posté le 14-08-2003 à 10:08:19  profilanswer
 

Taz a écrit :

ça vous ennuie de faire des titres en français?


 
Tous les programmeurs Perl ont très bien compris :)
 
d

n°486874
Taz
bisounours-codeur
Posté le 14-08-2003 à 10:16:56  profilanswer
 

là n'est pas la question.
 
t'aurais pu dire: "trier un tableau associatif"

n°487297
pospos
Posté le 14-08-2003 à 15:26:30  profilanswer
 

c'est plutot "trier un tableau  de hash", ou "trier un tableau de tableaux associatifs", ou "trier un tableau de references à des hashs"
there is more than one way to do it...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Un array de Hashes UP: trier ce array

 

Sujets relatifs
[perl/tk] verifier si une widget existe ou pasproblème avec array();
[Perl] cmd simmliaire à cut ??[Perl] Lecture du groupe détenteur d'un repertoire Unix
[PERL] Définir des variables globales[Perl] classer des e-mails en fonction du fournisseur
[PHP ou PERL] Cherches script pour avoir les requetes de recherchePortail en perl
[PERL] Rechercher un / avec une regex[Perl] Cgi de redirection
Plus de sujets relatifs à : [Perl] Un array de Hashes UP: trier ce array


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR