[PERL] table de hash de tableaux d'un tableau
Fermé
Ochman
Messages postés
9
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
10 juin 2008
-
12 juin 2007 à 10:38
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 12 juin 2007 à 14:32
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 12 juin 2007 à 14:32
A voir également:
- [PERL] table de hash de tableaux d'un tableau
- Tableau word - Guide
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
- Trier un tableau excel - Guide
- Table des matières word - Guide
8 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 juin 2007 à 11:18
12 juin 2007 à 11:18
Salut,
je ne sais pas si je suis tres clair :
Ici tu as raison :-)) ce n'est pas vraiment claire
cette commande renvoie sur STDOUT et SDTERR un ensemble d'informations que je traite ligne a ligne
J'ai besoin de savoir ce que tu as sur STDOUT et STDERR, et ce que tu dois obtenir comme résultat final
Merci.
je ne sais pas si je suis tres clair :
Ici tu as raison :-)) ce n'est pas vraiment claire
cette commande renvoie sur STDOUT et SDTERR un ensemble d'informations que je traite ligne a ligne
J'ai besoin de savoir ce que tu as sur STDOUT et STDERR, et ce que tu dois obtenir comme résultat final
Merci.
Ochman
Messages postés
9
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
10 juin 2008
12 juin 2007 à 12:54
12 juin 2007 à 12:54
stderr est redirigée vers sdtout et le tout est lié a EBUILD
Extrait de ce que j'ai a traiter
mon algo de traitement des lignes (extrait)
Ensuite les sous fonctions traitent l'affichage écran pour que l'utilisateur ai un "résumé" de ce qui s'est passé lors de la compilation. afin de savoir dans quel ordre se sont déroulées les étapes d'assemblage et si elles se sont bien déroulées .
je souhaite par la suite pour d'autres fonctionnalité de ce programme pouvoir accéder à l'état d'avance ment de chacune de ces étapes (Engaged, Not Egaged, Ok)en fonction de trois paramètres :
_l'étape d'avancement concernée (assembly, build, package, install)
_le ficher source (versionné) auquel il correspond
_l'assemblage auquel le fichier source appartient
my $Comand = "ebuild -b $BuildDir -B release -n $Prog -v $Version 2>&1" ; #the ebuild comand witch will build and install the project print "\nRunning: $Comand\n"; if ( ! open EBUILD, "$Comand |") { .... }
Extrait de ce que j'ai a traiter
checking for strip... strip checking for nm... nm checking if make is GNU make... yes checking for dependency tracking method... gcc configure: creating ./config.status config.status: creating Makefile OK add--1.0: running build (cd build && make) make[1]: Entering directory `/home/expand/Desktop/ExpandLauSeb/Expand/log/sources/add--1.0/projects/add/unix/build' ./bk-deps g++ -c -o add10_add.o -I../../../../cpp/pinclude -I../../../../cpp/include -DUNIX -DLINUX -fPIC -DPIC -O3 -Wall -Wno-sign-compare -D_UNIX ../../../../cpp/src/add.cpp
mon algo de traitement des lignes (extrait)
if ( ! open EBUILD, "$Comand |") #execute the comand $Comand and link ebuild sdtout with the EBUILD filehandle { die "Cannot open the ebuild filehandle : $!"; } my $ctxt = {}; while ( defined($Line = <EBUILD>)) { chomp($Line); if ( $Line =~ /^building assembly/i ) #call the handle witch manage the assembling { handle_what_it_assembly($ctxt, $Line); } if ( $Line =~ /running build$/i ) #call the handle witch manage the building { handle_building($ctxt, $Line); } if ( $Line =~ /running package$/i ) #call the handle witch manage the packaging { handle_packaging($ctxt, $Line); } if ( $Line =~ /^Installing packages/i ) #call the handle witch look at the package wich is installed { handle_installing($ctxt, $Line); } if ($Line =~ /^OK$/i ) #store the result of the build in a hash table($BuildReport) { handle_build_ok($Line); } if ( $Line =~ /Package successfully installed/i ) #print the install result g { handle_success_inst($Line); } if ($Line =~ /error/i) #call the handle witch manage the errors { handle_error($Line); } if ($Line =~ /^EBUILD : FAILED$/i) #call the handle witch manage the builds failures { handle_build_FAILED($ctxt,$Line); } $ctxt->{MostPreviousLine} = $ctxt->{PreviousLine}; #store the previous and the most previous lines $ctxt->{PreviousLine} = $Line; } close EBUILD; #close the filehandle LOGFILE
Ensuite les sous fonctions traitent l'affichage écran pour que l'utilisateur ai un "résumé" de ce qui s'est passé lors de la compilation. afin de savoir dans quel ordre se sont déroulées les étapes d'assemblage et si elles se sont bien déroulées .
je souhaite par la suite pour d'autres fonctionnalité de ce programme pouvoir accéder à l'état d'avance ment de chacune de ces étapes (Engaged, Not Egaged, Ok)en fonction de trois paramètres :
_l'étape d'avancement concernée (assembly, build, package, install)
_le ficher source (versionné) auquel il correspond
_l'assemblage auquel le fichier source appartient
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 juin 2007 à 13:11
12 juin 2007 à 13:11
D'accord, tu me montre ton algo, mais il utilise des fonctions dont je n'ai pas le code
Ce que j'avais besoin ce n'était pas ton algo mais ce que tu veux obtenir en sortie.
Donc j'ai l'entrée (en fin une partie)
checking for strip... strip
checking for nm... nm
checking if make is GNU make... yes
checking for dependency tracking method... gcc
configure: creating ./config.status
config.status: creating Makefile
OK
add--1.0: running build
(cd build && make)
make[1]: Entering directory `/home/expand/Desktop/ExpandLauSeb/Expand/log/sources/add--1.0/projects/add/unix/build'
./bk-deps g++ -c -o add10_add.o -I../../../../cpp/pinclude -I../../../../cpp/include -DUNIX -DLINUX -fPIC -DPIC -O3 -Wall -Wno-sign-compare -D_UNIX ../../../../cpp/src/add.cpp
mais pas la sortie
En bref il me faut un cas concret :-) de sortie pour un cas concret d'entrée.
Merci.
Ce que j'avais besoin ce n'était pas ton algo mais ce que tu veux obtenir en sortie.
Donc j'ai l'entrée (en fin une partie)
checking for strip... strip
checking for nm... nm
checking if make is GNU make... yes
checking for dependency tracking method... gcc
configure: creating ./config.status
config.status: creating Makefile
OK
add--1.0: running build
(cd build && make)
make[1]: Entering directory `/home/expand/Desktop/ExpandLauSeb/Expand/log/sources/add--1.0/projects/add/unix/build'
./bk-deps g++ -c -o add10_add.o -I../../../../cpp/pinclude -I../../../../cpp/include -DUNIX -DLINUX -fPIC -DPIC -O3 -Wall -Wno-sign-compare -D_UNIX ../../../../cpp/src/add.cpp
mais pas la sortie
En bref il me faut un cas concret :-) de sortie pour un cas concret d'entrée.
Merci.
Ochman
Messages postés
9
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
10 juin 2008
12 juin 2007 à 13:35
12 juin 2007 à 13:35
le truc c'est que ça va etre dur de te décrire ce que fait chacune des fonction parce que c'est un oeu compliqué a expliquer le tout du tout donc jvai essayer de t'aiclairer en te donnant ce que je souhaite que fasse en plus les fontions :
dans une variable $prog j'ai le nom de l'assemblage a compiler et sa version dans $Version;
handle_what_it_assembly -> me stocke dans une variable le nom de la source en train d'être traitée ainsi que sa version elle dit a l'utilisateur que l'assemblage de cette source de cette version a démaré
j'aimerai quelle me stocke dans une table de hash la valeur "Engaged" pour l'étape Assembly et "Not Engaged" pour les étapas build package et install de cette meme source de cette meme version
handle_building ->elle dit a l'utilisateur que la compilation de cette source de cette version a démaré
j'aimerai quelle stocke dans une table de hash la valeur "Engaged" a la place de "not Engaged" pour l'étape Build
handle_packaging->elle dit a l'utilisateur que la création des packets de cette source de cette version a démaré
j'aimerai quelle stocke dans une table de hash la valeur "Engaged" a la place de "not Engaged" pour l'étape Package
handle_installing->elle dit a l'utilisateur que l'installation du packet cette source de cette version a démaré
j'aimerai quelle stocke dans une table de hash la valeur "Engaged" a la place de "not Engaged" pour l'étape Installed
handle_build_ok->elle dit a l'utilisateur que la dernière étape engagée était un succès, cad que si (pour la source et la version concernée) l'étape assembly est "Engaged" et l'étape build est "not Engaged" elle met l'étape assembly a "ok" a la place de "Engaged"
handle_success_inst->fait la meme chose que handle_build_ok mais avec l'étape install (elle est différente a détecter)
handle_build_failed et error ne nous interressent pas ici
merci de m'aider je sais que je suis pas tres clair mais c'est que je m'y perd un peu dans le programme en ce moment ;)
edit: pour l'instant tout sort a l'écran par l'intermédiaire du shell et ce traitement se fait ligne a ligne, des qu'un ligne est traitée le programme affiche le résultat mais ne le stocke pas je souhaite stocker toutes les étapes afin de pouvoir les traiter plus tard ou dans d'autres fonctions du programme.je vai uploaded un exemple de fichier contenant stderr et stdout et le rendu que j'ai actuellement
http://ochmanboss.free.fr/Screenshot.png -> sortie de mon programme
http://ochmanboss.free.fr/LogFileOK.txt -> EBUILD (stderr et stdout)
dans une variable $prog j'ai le nom de l'assemblage a compiler et sa version dans $Version;
handle_what_it_assembly -> me stocke dans une variable le nom de la source en train d'être traitée ainsi que sa version elle dit a l'utilisateur que l'assemblage de cette source de cette version a démaré
j'aimerai quelle me stocke dans une table de hash la valeur "Engaged" pour l'étape Assembly et "Not Engaged" pour les étapas build package et install de cette meme source de cette meme version
handle_building ->elle dit a l'utilisateur que la compilation de cette source de cette version a démaré
j'aimerai quelle stocke dans une table de hash la valeur "Engaged" a la place de "not Engaged" pour l'étape Build
handle_packaging->elle dit a l'utilisateur que la création des packets de cette source de cette version a démaré
j'aimerai quelle stocke dans une table de hash la valeur "Engaged" a la place de "not Engaged" pour l'étape Package
handle_installing->elle dit a l'utilisateur que l'installation du packet cette source de cette version a démaré
j'aimerai quelle stocke dans une table de hash la valeur "Engaged" a la place de "not Engaged" pour l'étape Installed
handle_build_ok->elle dit a l'utilisateur que la dernière étape engagée était un succès, cad que si (pour la source et la version concernée) l'étape assembly est "Engaged" et l'étape build est "not Engaged" elle met l'étape assembly a "ok" a la place de "Engaged"
handle_success_inst->fait la meme chose que handle_build_ok mais avec l'étape install (elle est différente a détecter)
handle_build_failed et error ne nous interressent pas ici
merci de m'aider je sais que je suis pas tres clair mais c'est que je m'y perd un peu dans le programme en ce moment ;)
edit: pour l'instant tout sort a l'écran par l'intermédiaire du shell et ce traitement se fait ligne a ligne, des qu'un ligne est traitée le programme affiche le résultat mais ne le stocke pas je souhaite stocker toutes les étapes afin de pouvoir les traiter plus tard ou dans d'autres fonctions du programme.je vai uploaded un exemple de fichier contenant stderr et stdout et le rendu que j'ai actuellement
http://ochmanboss.free.fr/Screenshot.png -> sortie de mon programme
http://ochmanboss.free.fr/LogFileOK.txt -> EBUILD (stderr et stdout)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 juin 2007 à 13:43
12 juin 2007 à 13:43
Je crois que on s'est mal compris
Je n'ai pas besoin de savoir ce qu'elle font tes fonctions, quoique ça me donne une idée de la façon dont tu traites ton problème
Ce que j'ai besoin c'est de résultat que tu dois obtenir et pas comment tu penses l'obtenir.
Donc un cas concret et pas les variables que tu crées pour traiter ton problème.
Merci.
Je n'ai pas besoin de savoir ce qu'elle font tes fonctions, quoique ça me donne une idée de la façon dont tu traites ton problème
Ce que j'ai besoin c'est de résultat que tu dois obtenir et pas comment tu penses l'obtenir.
Donc un cas concret et pas les variables que tu crées pour traiter ton problème.
Merci.
Ochman
Messages postés
9
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
10 juin 2008
12 juin 2007 à 13:54
12 juin 2007 à 13:54
ce que je doit obtenir c'est le moyen d'accéder (a nimporte quel moment de l'éxécution du programme ) a un listing de ce qui c'est passé pour chaque assemblage, cad que par exemple a un moment si j'ai besoins de reprendre toutes ces information pour les stocker dans une base de donnée sql afin d'effectuer des statistique de compilation pour afficher sur une page web.Donc je veu pouvoir stocker toutes les informations de compilation de l'assemblage dans des variables pour les rendre facilement accecible. afin de pouvoir les traiter.
Ochman
Messages postés
9
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
10 juin 2008
12 juin 2007 à 14:13
12 juin 2007 à 14:13
je croi que j'ai trouvé je te tiens au courant
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 juin 2007 à 14:32
12 juin 2007 à 14:32
Salut,
tant mieux si tu as trouvé, ça m'evitera de travailler :-))
tant mieux si tu as trouvé, ça m'evitera de travailler :-))