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 (HHTH pour la suite... c'est moins long à écrire!)
Pour lire l'heure du début du premier lancement du logiciel, je ferai ceci :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print $hash{'Jack.Poulette'}{'21/07/2005'}[0]{'debut'};
"Can't coerce array into hash line 21"
et à la ligne 21, j'ai :
je met le code juste avant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print $tabHours[0]{debut};
Notes : j'ai ouvert le fichier au tout début avec
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 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}; }
Et sinon, quand je mets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 open(LOG,'D:\Perl\hist.log') or die("Impossible d'ouvrir l'historique");
j'ai les bons horaires qui s'affichent!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print $tabTemp[$i]."\t".$tabTemp[$i+1]."\n";
Aidez MOIIIII!!!
Partager