[Novice] Parser des fichiers dans plusieurs répertoires et créer une base de donnée
19 réponses
noone
Bonjour,
Tout d'abord je suis totalement novice avec Perl.
Je suis en train de réaliser une base d'exercices avec LaTeX.
J'ai un exercice et son corrigé par répertoire. (exercice.tex et
correction.tex)
je voudrais réaliser une base de donnée (un simple fichier texte suffira)
Dans chaque répertoire j'ai créé un fichier index.txt qui à l'allure
suivante
index.txt du répertoire exo00001
%CLASSE=la classe
%DOMAINE=le domaine
...
index.txt du répertoire exo00002
%CLASSE=la classe 2
%DOMAINE=le domaine 2
...
Je ne sais pas comment m'y prendre pour lire tous les fichiers index.txt
et créer la base
index_table.txt
00001 la classe le domaine
00002 la classe 2 le domaine 2
...
Je pense que c'est très basique mais encore faut-il connaitre un minimum
Perl (et peut-être même les regexp aussi)
Autre question...
Avez-vous une meilleure idée d'organisation ?
Parce que je me pose la question :
Et si je change l'organisation des fichiers index.txt par exemple, cela
ne risque pas de merder ?
Il faudrait alors être capable de faire l'inverse : regénérer chaque
index.txt à partir du gros index_table.txt.
=> 2ème script Perl
Et pour les requêtes je m'organise comment ?
Merci d'avance.
et désolé d'avoir été un peu long...
j'ai quand même un problème avec ce morceau ("$fileindex.txt") je suis sous Linux Debian je pense que le problème viens des ou / dans les répertoires mais n'existe-t-il pas un moyen de faire quelque chose de portable (Linux et Windows) pour gérer les répertoires ?
Oooops j'ai lu un peu vite les posts sur f.c.t.t, désolé. D'autres personnes ont répondus donc cf. leurs réponses ;)
Merci
noone@nowhere.com wrote:
j'ai quand même un problème avec ce morceau ("$file\index.txt")
je suis sous Linux Debian
je pense que le problème viens des ou / dans les répertoires mais
n'existe-t-il pas un moyen de faire quelque chose de portable (Linux
et Windows) pour gérer les répertoires ?
Oooops j'ai lu un peu vite les posts sur f.c.t.t, désolé. D'autres
personnes ont répondus donc cf. leurs réponses ;)
j'ai quand même un problème avec ce morceau ("$fileindex.txt") je suis sous Linux Debian je pense que le problème viens des ou / dans les répertoires mais n'existe-t-il pas un moyen de faire quelque chose de portable (Linux et Windows) pour gérer les répertoires ?
Oooops j'ai lu un peu vite les posts sur f.c.t.t, désolé. D'autres personnes ont répondus donc cf. leurs réponses ;)
Merci
Régis Caspar
wrote:
Encore une autre question...
j'ai maintenant à la fin quelque chose du genre
print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
Si il y a un problème cela déclenche l'erreur :
Use of uninitialized value in concatenation (.) or string at make_index_base.pl line xx
comment traiter ce cas pour qu'il m'indique sur quel numéro est le problème...
Verifiez les variables concaténée (par ailleurs, le message "Use of..." n'est pas une erreur mais un warning) : warn "Probleme dans $file$SEP_DIR"."index.txt n" if ( !defined($classe) or !defined($domaine) or !defined($niveau) or !defined($notions) );
-- Régis Caspar
noone@nowhere.com wrote:
Encore une autre question...
j'ai maintenant à la fin quelque chose du genre
print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
Si il y a un problème cela déclenche l'erreur :
Use of uninitialized value in concatenation (.) or string at
make_index_base.pl line xx
comment traiter ce cas pour qu'il m'indique sur quel numéro est le
problème...
Verifiez les variables concaténée (par ailleurs, le message "Use of..."
n'est pas une erreur mais un warning) :
warn "Probleme dans $file$SEP_DIR"."index.txt n"
if ( !defined($classe) or !defined($domaine)
or !defined($niveau) or !defined($notions) );
print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
Si il y a un problème cela déclenche l'erreur :
Use of uninitialized value in concatenation (.) or string at make_index_base.pl line xx
comment traiter ce cas pour qu'il m'indique sur quel numéro est le problème...
Verifiez les variables concaténée (par ailleurs, le message "Use of..." n'est pas une erreur mais un warning) : warn "Probleme dans $file$SEP_DIR"."index.txt n" if ( !defined($classe) or !defined($domaine) or !defined($niveau) or !defined($notions) );
-- Régis Caspar
noone
Verifiez les variables concaténée (par ailleurs, le message "Use of..." n'est pas une erreur mais un warning) :
merci pour la nuance
warn "Probleme dans $file$SEP_DIR"."index.txt n" if ( !defined($classe) or !defined($domaine) or !defined($niveau) or !defined($notions) );
oui j'ai essayé de mettre ça après le print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
mais ça n'a pas l'air de fonctionner lorsque j'ai un fichier index.txt comme
%CLASSE=1 S %DOMAINE %NIVEAU=5 %NOTIONS
et sinon avez-vous une idée pour le problème avec le Makefile qui s'interromp ?
Verifiez les variables concaténée (par ailleurs, le message "Use of..."
n'est pas une erreur mais un warning) :
merci pour la nuance
warn "Probleme dans $file$SEP_DIR"."index.txt n"
if ( !defined($classe) or !defined($domaine)
or !defined($niveau) or !defined($notions) );
oui j'ai essayé de mettre ça après le
print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
mais ça n'a pas l'air de fonctionner lorsque j'ai un fichier index.txt
comme
%CLASSE=1 S
%DOMAINE %NIVEAU=5
%NOTIONS
et sinon avez-vous une idée pour le problème avec le Makefile qui
s'interromp ?
mais ça n'a pas l'air de fonctionner lorsque j'ai un fichier index.txt comme
%CLASSE=1 S %DOMAINE > %NIVEAU=5 %NOTIONS >
Désolé c'est normal cela signifie que la chaine est vide...
donc il faut rajouter un test pour ça
et sinon avez-vous une idée pour le problème avec le Makefile qui s'interromp ?
je n'ai toujours pas d'idée
Régis Caspar
wrote:
warn "Probleme dans $file$SEP_DIR"."index.txt n" if ( !defined($classe) or !defined($domaine) or !defined($niveau) or !defined($notions) );
oui j'ai essayé de mettre ça après le
print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
mais ça n'a pas l'air de fonctionner lorsque j'ai un fichier index.txt comme %CLASSE=1 S %DOMAINE > %NIVEAU=5 %NOTIONS Ça doit fonctionner mais perl lance un warning (ça fonctionne ici). Il
est possible d'initialiser les variables $classe, ... à '' avant les expressions régulières, ainsi pas de soucis à la concaténation.
et sinon avez-vous une idée pour le problème avec le Makefile qui s'interromp ?
Non désolé.
-- Régis Caspar
noone@nowhere.com wrote:
warn "Probleme dans $file$SEP_DIR"."index.txt n"
if ( !defined($classe) or !defined($domaine)
or !defined($niveau) or !defined($notions) );
oui j'ai essayé de mettre ça après le
print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
mais ça n'a pas l'air de fonctionner lorsque j'ai un fichier index.txt
comme
%CLASSE=1 S
%DOMAINE > %NIVEAU=5
%NOTIONS
Ça doit fonctionner mais perl lance un warning (ça fonctionne ici). Il
est possible d'initialiser les variables $classe, ... à '' avant les
expressions régulières, ainsi pas de soucis à la concaténation.
et sinon avez-vous une idée pour le problème avec le Makefile qui
s'interromp ?
warn "Probleme dans $file$SEP_DIR"."index.txt n" if ( !defined($classe) or !defined($domaine) or !defined($niveau) or !defined($notions) );
oui j'ai essayé de mettre ça après le
print OUT "$num$SEP$classe$SEP$domaine$SEP$niveau$SEP$notionsn";
mais ça n'a pas l'air de fonctionner lorsque j'ai un fichier index.txt comme %CLASSE=1 S %DOMAINE > %NIVEAU=5 %NOTIONS Ça doit fonctionner mais perl lance un warning (ça fonctionne ici). Il
est possible d'initialiser les variables $classe, ... à '' avant les expressions régulières, ainsi pas de soucis à la concaténation.
et sinon avez-vous une idée pour le problème avec le Makefile qui s'interromp ?
Non désolé.
-- Régis Caspar
Jogo
Le 30 mars 2005, a écrit dans fr.comp.lang.perl :
et sinon avez-vous une idée pour le problème avec le Makefile qui s'interromp ?
Si tu as recopié exactement le script de Regis, essais de remplacer le "exit 1" par un "exit 0" pour voir...
Le 30 mars 2005, noone@nowhere.com a écrit dans fr.comp.lang.perl :
et sinon avez-vous une idée pour le problème avec le Makefile qui
s'interromp ?
Si tu as recopié exactement le script de Regis, essais de remplacer le
"exit 1" par un "exit 0" pour voir...
et sinon avez-vous une idée pour le problème avec le Makefile qui s'interromp ?
Si tu as recopié exactement le script de Regis, essais de remplacer le "exit 1" par un "exit 0" pour voir...
noone
Si tu as recopié exactement le script de Regis, essais de remplacer le "exit 1" par un "exit 0" pour voir...
Merci... désolé je suis bête... mais je fais un peu de C++ et j'écris return EXIT_SUCCESS; alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne m'avais même pas effleuré l'esprit...) Merci encore
Si tu as recopié exactement le script de Regis, essais de remplacer le
"exit 1" par un "exit 0" pour voir...
Merci... désolé je suis bête...
mais je fais un peu de C++ et j'écris return EXIT_SUCCESS;
alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne
m'avais même pas effleuré l'esprit...)
Merci encore
Si tu as recopié exactement le script de Regis, essais de remplacer le "exit 1" par un "exit 0" pour voir...
Merci... désolé je suis bête... mais je fais un peu de C++ et j'écris return EXIT_SUCCESS; alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne m'avais même pas effleuré l'esprit...) Merci encore
Régis Caspar
wrote:
Merci... désolé je suis bête... mais je fais un peu de C++ et j'écris return EXIT_SUCCESS; alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne m'avais même pas effleuré l'esprit...) Merci encore
Bonsoir,
Oui /mea culpa/ c'est moi qui me suis emmêlé les pinceaux avec les codes de sortie... désolé.
-- Régis Caspar, qui finira bien par retenir que "tout est ok" = "exit 0"
noone@nowhere.com wrote:
Merci... désolé je suis bête...
mais je fais un peu de C++ et j'écris return EXIT_SUCCESS;
alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne
m'avais même pas effleuré l'esprit...)
Merci encore
Bonsoir,
Oui /mea culpa/ c'est moi qui me suis emmêlé les pinceaux avec les codes
de sortie... désolé.
--
Régis Caspar, qui finira bien par retenir que "tout est ok" = "exit 0"
Merci... désolé je suis bête... mais je fais un peu de C++ et j'écris return EXIT_SUCCESS; alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne m'avais même pas effleuré l'esprit...) Merci encore
Bonsoir,
Oui /mea culpa/ c'est moi qui me suis emmêlé les pinceaux avec les codes de sortie... désolé.
-- Régis Caspar, qui finira bien par retenir que "tout est ok" = "exit 0"
noone
wrote:
Merci... désolé je suis bête... mais je fais un peu de C++ et j'écris return EXIT_SUCCESS; alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne m'avais même pas effleuré l'esprit...) Merci encore
Bonsoir,
Oui /mea culpa/ c'est moi qui me suis emmêlé les pinceaux avec les codes de sortie... désolé.
de rien il est extra ce script...
noone@nowhere.com wrote:
Merci... désolé je suis bête...
mais je fais un peu de C++ et j'écris return EXIT_SUCCESS;
alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne
m'avais même pas effleuré l'esprit...)
Merci encore
Bonsoir,
Oui /mea culpa/ c'est moi qui me suis emmêlé les pinceaux avec les codes
de sortie... désolé.
Merci... désolé je suis bête... mais je fais un peu de C++ et j'écris return EXIT_SUCCESS; alors je ne me souvenait pas si la sortie devait être 0 ou 1 (et ça ne m'avais même pas effleuré l'esprit...) Merci encore
Bonsoir,
Oui /mea culpa/ c'est moi qui me suis emmêlé les pinceaux avec les codes de sortie... désolé.