Tableau associatif trois dimensions...

Tableau associatif trois dimensions... - Perl - Programmation

Marsh Posté le 07-10-2005 à 11:24:59    

Bonjour,
je cherche à créer un tableau à trois dimensions... Il faut que cela soit un tableau associatif, mais j'ai quelques soucis.
Déjà j'essaie de me créer un tableau associatif à 2 dimensions, comme ceci :
my %value = (
  'Ensemble','Sévérité'=>'1',
  'Ensemble','Informations'=>'Test d\'infos',
  'Ensemble','Date'=>'10/10/05',
  'Ensemble','Etat'=>'HS',
  'Ensemble','N° Prestation'=>'2005',
  'Ensemble','Supertype'=>'Transpac',
  'Ensemble','Libelle d\'alarme'=>'E202A',
  'Ensemble','Titulaire'=>'Dupond',
  'Ensemble','Donnees'=>'Tests de données',
  'Ensemble','GTR'='GTR');

 
Puis j'essaie d'afficher les données comme ceci :print " Test : ".$value{1}{1};
 
mais rien à faire, je ne vois rien d'afficher à côté de "Data :", pareil si j'essaie d'afficher comme cela : print " Test : ".$value{0}{0};, ou comme cela pour avoir juste une donnée : print " Test : ".$value{'Ensemble'}{'Date'};...
 
Voilà, merci de votre aide ! :)

Reply

Marsh Posté le 07-10-2005 à 11:24:59   

Reply

Marsh Posté le 07-10-2005 à 13:40:30    

ce que tu semble vouloir faire s'ecrit comme ca:

Code :
  1. my %value = (
  2.   Ensemble => {
  3.     'Sévérité'=>'1',
  4.     'Informations'=>'Test d'infos',
  5.     'Date'=>'10/10/05',
  6.     'Etat'=>'HS',
  7.     'N° Prestation'=>'2005',
  8.     'Supertype'=>'Transpac',
  9.     'Libelle d'alarme'=>'E202A',
  10.     'Titulaire'=>'Dupond',
  11.     'Donnees'=>'Tests de données',
  12.     'GTR'='GTR'
  13.   },
  14.   'Ensemble2' => {a=> b},
  15. );


 
Mais si tu ne comprend pas ces structures de données (references) tu peux aussi tout mettre à plat dans un seul niveau de hash:
au lieu de faire $value{Ensemble}{GTR} tu peu faire $value{'Ensemble - GTR'} (si tu est sur qu'il n'y a pas de ' - ' dans tes clés).
 
et du coup ta structure s'ecrirait comme ca:

Code :
  1. my %value = (
  2.   'Ensemble - Sévérité'=>'1',
  3.   'Ensemble - Informations'=>'Test d'infos',
  4.   'Ensemble - Date'=>'10/10/05',
  5.   'Ensemble - Etat'=>'HS',
  6.   'Ensemble - N° Prestation'=>'2005',
  7.   'Ensemble - Supertype'=>'Transpac',
  8.   'Ensemble - Libelle d'alarme'=>'E202A',
  9.   'Ensemble - Titulaire'=>'Dupond',
  10.   'Ensemble - Donnees'=>'Tests de données',
  11.   'Ensemble - GTR'='GTR');


 
en plus à priori ca prendra moins de place et ca sera plus rapide. Le seul probleme sera que tu ne pourra pas facielemnt parcourir l'ensemble des clés d'un niveau donné

Reply

Marsh Posté le 07-10-2005 à 13:51:33    

Je te remercie c'est exactement ce que je cherchais !

Reply

Marsh Posté le 07-10-2005 à 16:53:48    

Pour parcourir ta hash y a cette forme :
foreach $a (keys %valeur){}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed