Bonjour,
Je parts d'un tableau contenant des données de ce type :
Je souhaite obtenir une table de hachage qui pour une date donnée lui associerait comme valeur un tableau dont les valeurs sont des références vers d'autres tableaux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ["24/11/2007", "a", 1, 2, 3, 4]; ["24/11/2007", "b", 5, 6, 7, 8]; ["24/11/2007", "c", 9, 10, 11, 12]; ["25/11/2007", "d", 10, 20, 30, 40]; ["25/11/2007", "e", 50, 60, 70, 60];
Et donc, en partant des données que j'ai pris comme exemple, j'obtiendrais comme affichage en sortie :
Voici le code que j'ai écrit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 24/11/2007 : a 1 2 3 4 b 5 6 7 8 c 9 10 11 12 25/11/2007 : d 10 20 30 40 e 50 60 70 60
Le soucis que j'ai, c'est que je n'arrive pas à savoir comment faire pour ne pas écrasé les données pour obtenir ce que je souhaite.
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #!usr/bin/perl -w use strict; my $ref1 = ["24/11/2007", "a", 1, 2, 3, 4]; my $ref2 = ["24/11/2007", "b", 5, 6, 7, 8]; my $ref3 = ["24/11/2007", "c", 9, 10, 11, 12]; my $ref4 = ["25/11/2007", "d", 10, 20, 30, 40]; my $ref5 = ["25/11/2007", "e", 50, 60, 70, 60]; #insertion des données dans le tableau my @tab = (); push(@tab, $ref1); push(@tab, $ref2); push(@tab, $ref3); push(@tab, $ref4); push(@tab, $ref5); #table de hachage avec comme clé une date et comme valeur une référence vers un tableau my %date_tab = (); #reference vers un tableau my $ref; #parcours du tableau pour récupérer les infos à ajouter dans la table de hachage foreach my $datas(@tab){ $ref = [$$datas[1], $$datas[2], $$datas[3], $$datas[4], $$datas[5]]; $date_tab{$$datas[0]} = [$ref]; } while(my ($cle,$valeur) = each(%date_tab)){ print "$cle : "; foreach my $data(@$valeur){ print "$$data[0] $$data[1] $$data[2] $$data[3] $$data[4]\n"; } }
En sortie, j'obtiens :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 25/11/2007 : e 50 60 70 60 24/11/2007 : c 9 10 11 12
Partager