Problèmes de Hashages et de Tableaux
Je suis en train de faire un programme Perl qui permet de faire un suivi du lancement de logiciel. Dès que l'on va lancer ou fermer le programme, le script va se lancer pour ajouter les infos nécessaires. Ce programme lit dans un fichier texte structuré de cette forme :
date@login@heureDebut1@heureFin1@heureDebut2 ...
(note : il y a minimum heureDebut1, après ça dépends du nombre de fois où la personne lance et ferme le programme une même journée)
et j'ai une structure assez compliquée pour stocker tout ça :
C'est un hashage de hashages de tableaux de hashages :D (HHTH pour la suite... c'est moins long à écrire!)
Pour lire l'heure du début du premier lancement du logiciel, je ferai ceci :
Code:
1 2
|
print $hash{'Jack.Poulette'}{'21/07/2005'}[0]{'debut'}; |
Voilà le but. J'ai trouvé une source sur le net avec des structures compliquées dont ce fameux HHTH! Mais j'ai un message d'erreur bizarre :
"Can't coerce array into hash line 21"
et à la ligne 21, j'ai :
Code:
1 2
|
print $tabHours[0]{debut}; |
je met le code juste avant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
while($ligneCourante = <LOG>) {
chomp $ligneCourante;
local @tabTemp = split /@/, $ligneCourante;
#Création du tableau de hashages des horaires
local @tabHours = [];
for(my $i=2;$i<scalar @tabTemp;$i+=2) {
push @tabHours,{
debut => $tabTemp[$i],
fin => $tabTemp[$i+1]
};
}
print $tabHours[0]{debut};
} |
Notes : j'ai ouvert le fichier au tout début avec
Code:
1 2
|
open(LOG,'D:\Perl\hist.log') or die("Impossible d'ouvrir l'historique"); |
Et sinon, quand je mets :
Code:
1 2
|
print $tabTemp[$i]."\t".$tabTemp[$i+1]."\n"; |
j'ai les bons horaires qui s'affichent!
Aidez MOIIIII!!!