Bonjour,
Je suis plutôt débutant en perl, et essaie de développer un script servant à me créer des fiches de vocabulaire pour m'aider dans l'apprentissage d'une langue que j'étudie.
Je note mon vocabulaire sur un fichier texte sous le format suivant (avec encore d'autres spécifications, que je ne vais pas mettre par souci de clarté) :
mot1Langue1;mot1Langue2;natureDuMot;champLexical;
mot2Langue1;mot2Langue2;natureDuMot;champLexical;
...
Le but de mon script est de pouvoir filtrer les données de ce fichier, et créer une fiche de vocabulaire correspondant aux choix définis par l'utilisateur.
Par exemple, me sortir une fiche avec tous les adjectifs correspondant au champ lexical "couleur"
J'ai donc, au début de script, ce genre de chose :
De la même façon, on nous pose 2 autres questions pour définir la forme finale de la fiche à sortir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ### On ouvre le fichier ou se trouve la liste de vocabulaire open (LISTE, 'dbvoc.txt'); ### Quel type de mot nous intéresse print "Nature \n"; my $nature = <stdin>; chomp($nature); ### Quelle thématique nous intéresse print "Champ lexical \n"; my $chplex = <stdin>; chomp($chplex);
Ensuite, j'ouvre le fichier dans lequel je vais copier mes données :
Le nom de la fiche sera dynamique, selon les critères demandé (mais il faut encore que je m'en occupe)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ### On ouvre / créé le fichier dans lequel sera copie le vocabulaire. open (FICHEVOC, '>mafiche.txt');
Arrive finalement le moment où je dois filtrer mes recherches et les copier dans le fichier.
Dans la version d'essai, je n'avais qu'une condition, et ça marchait très bien :
Ca me sort donc un document avec une liste de tous les mots correspondant à la nature demandée.
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 ### Boucle pour inscrire les données filtrées dans la fiche de vocabulaire my $cols; my $ligne; while($ligne=<LISTE>) { ### On se sert des ; séparant les données du fichier pour les mettre dans un tableau @cols = split(";",$ligne); ### Si la nature du mot correspond à celle demandée, on inscrit les données du mot dans la fiche if ($cols[2] eq $nature) { print FICHEVOC "\n$cols[0] - $cols[1] - $cols[2] - $cols[3] \n"; } } ### On ferme les documents ouverts close (FICHEVOC); close (LISTE);
Seulement, puisque je voudrais maintenant prendre en compte plusieurs critères, ça n'est forcément plus si simple, et j'avoue arriver à cours d'idées concernant la marche à suivre pour y parvenir... Si quelqu'un avait une piste à me conseiller, je lui offrirai beaucoup, beaucoup de gratitude.
--EDIT--
J'ai oublié de préciser ce qui pose vraiment problème : c'est qu'il est également nécessaire que l'on puisse ne pas spécifier toutes les conditions de recherche... Par exemple, ne demander que de sortir une fiche sur les adjectifs, ou encore, ne demander qu'une fiche sur le champ lexical de la couleur en général
Partager