Reconnaitre qu'un verbe est écrit à l'infinitif, et dans ce cas donner sa conjugaison au présent de l'indicatif
#!/usr/bin/perl #On crée un tableau @pronoms @pronoms=("Je","Tu","Il","Nous","Vous","Ils"); #On crée un tableau @presind => terminaisons du présent de l'indicatif @presind=("e","es","e","ons","ez","ent"); #On crée un tableau @impind => terminaisons de l'imparfait de l'indicatif @impind=("ais","ais","ait","ions","iez","aient"); #On crée un tableau @futind => terminaisons du futur de l'indicatif @futind=("erai","eras","era","erons","erez","eront"); #On affiche "Verbe a conjuguer (Par defaut : chanter) : " print "Verbe a conjuguer (Par defaut : chanter) : "; $verbe=<STDIN>; chomp ($verbe); #mise en minuscule de tous les caractères contenus dans $verbe $verbe=lc($verbe); if ($verbe eq "") { #On affecte $verbe à "chanter" $verbe="chanter"; } #Si le contenu de la variable $verbe contient une chaîne de caractères composée de n'importe quel caractère minuscule compris entre a et z répété 1 à plusieurs fois et se terminant par er, on exécute le bloc d'instructions if ($verbe=~/([a-z]+)er$/) { #On affecte à la variable $radical le motif recherché qui se trouve dans la première paranthèse (Contenu dans la variable $1) $radical=$1; #On affiche "Conjugaison du verbe ", suivi du contenu de $verbe et suivi de " au present de l'indicatif : " print "\nConjugaison du verbe \033[1;34;40m",$verbe,"\033[00m au present de l'indicatif :\n"; #On crée une boucle avec une variable $i comme compteur et qui est initialisé à 0 #On incrémente à chaque passage for ($i=0;$i<=5;$i++) { #On affiche l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms, suivi d'une tabulation, suivi du contenu de la variable $radical et suivi de $i du tableau $presind #On retourne à la ligne print $pronoms[$i],"\t",$radical,"\033[1;34;40m",$presind[$i],"\033[00m\n"; } print "\n"; #On affiche "Conjugaison du verbe ", suivi du contenu de $verbe et suivi de " a l'imparfait de l'indicatif : " print "\nConjugaison du verbe \033[1;34;40m",$verbe,"\033[00m a l'imparfait de l'indicatif :\n"; #On crée une boucle avec une variable $i comme compteur et qui est initialisé à 0 #On incrémente à chaque passage ($i++) la variable $i #On exécute le bloc d'instructions (= Instructions contenues entre accolades) tant que la variable $i est inférieure ou égale à 5 (Donc on exécute 6 fois le bloc d'instructions) for ($i=0;$i<=5;$i++) { #On affiche l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms, suivi d'une tabulation, suivi du contenu de la variable $radical et suivi en rouge de l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $impind #On retourne à la ligne print $pronoms[$i],"\t",$radical,"\033[1;34;40m",$impind[$i],"\033[00m\n"; } print "\n"; #On affiche "Conjugaison du verbe ", suivi du $verbe et suivi de " a l'imparfait de l'indicatif : " print "\nConjugaison du verbe \033[1;34;40m",$verbe,"\033[00m au futur de l'indicatif :\n"; #On crée une boucle avec une variable $i comme compteur et qui est initialisé à 0 #On incrémente à chaque passage ($i++) la variable $i #On exécute le bloc d'instructions (= Instructions contenues entre accolades) tant que la variable $i est inférieure ou égale à 5 (Donc on exécute 6 fois le bloc d'instructions) for ($i=0;$i<=5;$i++) { #On affiche l'élément numéro $i (Donc un nombre entre 0 et 5) du tableau $pronoms, suivi d'une tabulation, suivi du contenu de la variable $radical et suivi de $i (Donc un nombre entre 0 et 5) du tableau $futind print $pronoms[$i],"\t",$radical,"\033[1;34;40m",$futind[$i],"\033[00m\n"; } #On retourne à la ligne print "\n"; } #Sinon si la condition n'est pas remplie, on exécute le bloc d'instructions else { print "\033[1;34;40m",$verbe,"\033[00m n'est pas un verbe du premier groupe.\n\n"; }