substitutions, expressions régulières et dictionnaire ... [Perl] - Perl - Programmation
Marsh Posté le 23-09-2003 à 10:28:07
perso je ferais un truc dans ce gout la:
Code :
|
mais tu fais une boucle et si tu as beaucoup de clé ça peut ramer.
Sinon tu peux essayer quelque chose comme ça:
Code :
|
Si ya des trucs que tu comprends pas hesites pas !!!
Marsh Posté le 23-09-2003 à 10:35:06
vais essayer ça
la seconde méthode devrait fonctionner à priori
(la première marchera pas trop vu que ça va par exemple me transformer un my en your puis ce même your en my )
Marsh Posté le 23-09-2003 à 11:54:19
des petits trucs qui pourraient t'aider:
un clone d'eliza:
http://search.cpan.org/~jnolan/Chatbot-Eliza-1.04/
un truc pour faires des regexps rapides à partir de listes:
http://search.cpan.org/author/DANK [...] xp/List.pm
un truc pour eviter les problemes des substiutions chainées (tres important pour ton probleme):
http://search.cpan.org/author/LPAL [...] arallel.pm
et sinon, au lieu de faire
Code :
|
tu peu simplement taper:
Code :
|
Marsh Posté le 24-09-2003 à 11:11:05
merci beaucoup pour ton aide
j'ai pas tout utilisé mais vu que le truc était à faire en une semaine, je pense que j'ai qq chose d'acceptable
Marsh Posté le 23-09-2003 à 10:13:10
Je débute en PERL et je dois travailler sur un petit projet (type ELIZA pour ceux qui connaissent) et j'ai un p'tit problème avex le commande de substitution
voilà ce que je cherches à faire :
$maChaine = s/I am/are you/;
(l'idée est de retourner les questions de l'utilisateur)
pour me simplifier la tâches, j'ai créé un dico comme ça :
inver{'I am'} = 'are you';
inver{'you are'} = 'am I';
...
...
...
j'utilise ça de cette façon :
$maChaine = s/(I am|you are)/$inver{$1}/;
ça fonctionne mais je dois écrire (I am|you are) et la liste s'allonge dramatiquement, je voudrais donc trouver le moyen de donner toutes les clés d'un dictionnaire dans le premier paramètre du s
à votre bon coeur