Problème avec mon programme perl

Résolu/Fermé
karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 - 16 juil. 2007 à 17:18
karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 - 16 août 2007 à 11:53
Bonjour !
Je travaille sous Perl en programmation et j'utilise Crimson Editor pour taper mes scripts....
J'ai un souci avec mon programme au niveau de la variable $trouve et je ne comprends pas pourquoi. Dans le shell, ils me disent bareword "oui" is not allowed... (je sais ce que ca veut dire mais bon ca ne m'aide pas vraiment).
En fait c'est depuis que j'ai intégré la partie avec la variable $trouve que j'ai un souci...(je le mets en italique).
En fait ce que je dois faire c'est ouvrir un fichier (qui sera un dico) et si le mot est dedans soit la traduction de ce mot est donnée soit on l'ajoute dans le dico...

Par contre SVP !!!! la facon dont j'ai l'habitude d'écrire en perl ne ressemble pas vraiment à tout ce que je vois sur le site donc : pas de commandes que je ne connais pas svp...en cas, j vous donnerai ce kj'ai eu en cours...

Voilà ce que j'ai fait jusqu'à présent :

#!usr/bin/perl
use strict;
use warnings;

my $rep;
my $rep2;
my $mot_langue;
my $mot_fr;
my $mot_ang;
my $trad_ang;
my $trad_fr;
my $texte_langue;
my $trouve;
my $ajout2;
my $nomfich;
my $fic_fr;
my $ficdico_fr;
my $ligne;
my $dico_fr;
my $nomfich1;



$nomfich=shift;
$nomfich1=shift;

print ("Voulez-vous traduire un mot, O ou N ?");
$rep=<STDIN>;
chomp $rep;


if ($rep eq "O") {

print ("Voulez-vous traduire un mot francais en anglais, 0 ou N ?");
$rep2=<STDIN>;
chomp $rep2;

if ($rep2 eq "O") {
print ("tapez le mot francais à traduire \n");
$mot_fr=<STDIN>;
chomp $mot_fr;

open $ficdico_fr,'<',"dico_fr.txt" or die "fichier non ouvert!\n";
$trouve=non;

if ($trouve==oui) {
print $trad_ang;
$trad_ang=<STDIN>;
chomp $trad_ang;

}

else {

if ($trouve==non) {
open $ficdico_fr,'>>',"dico_fr.txt" or die "fichier non ouvert!\n";
$ajout2="\n$dico_fr";
print $ficdico_fr $ajout2;
close $ficdico_fr;

open $ficdico_fr,'<',"dico_fr.txt" or die "fichier non ouvert!\n";
print " ";

while ($ligne=<$ficdico_fr>) {
print $ligne;
}
}
}
}



else {
if ($rep2 eq "N") {
print ("tapez le mot anglais à traduire \n");
$mot_ang=<STDIN>;
chomp $mot_ang;
}
}
}

else {
if ($rep eq "N") {
print ("tapez le texte à traduire \n");
$texte_langue=<STDIN>;
chomp $texte_langue;
}
}


Voilà...j'espère que qqun pourra m'aider !!
merci d'avance

43 réponses

karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 1
7 août 2007 à 12:07
en fait tout bien réfléchi j prefere garder mon ecriture perl ...cela dit, comme j't'ai dit, si j'ai besoin d'aide, je te fais signe ;-)
0
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
7 août 2007 à 12:16
j prefere garder mon ecriture perl
c'est ton choix et je le respecte :-))

en revanche, je te conseille de faire d'abord l'algo avant d'écrire le code
c'est une étape à ne pas sauter

pour la partie aide, pas de problème :-))
0
karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 1
8 août 2007 à 12:03
pour le menu tkt pas je l'ai rajouté pask c clair k ca fait bien, c plus clair :-)
pour la partie texte justement je comptais la commencer aujourd'hui vu le tps kil fait dehors lol...
pour l'algo oui j vais le faire :-) ...
et tkt pas j sais k tu n'imposes pas ton aide ;-)
0
karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 1
9 août 2007 à 17:46
j te redonne mon code pask j'ai rajouté une petite partie pour mettre les mots du fichier qui contient le texte francais (pask en fait il faut auss que la traduction de texte anglais soit possible) en retour chariot...normalement ce k'j'ai rajouté ressort en gras...

#!usr/bin/perl
use strict;
use warnings;

my $rep;
my $rep2;
my $rep3;
my $mot_langue;
my $mot_fr;
my $mot_ang;
my $trad_ang;
my $trad_fr;
my $texte_langue;
my $texte_fr;
my $trouve;
my $ajout2;
my $nomfich;
my $fictexte_fr;
my $ficdico_fr1;
my $ligne;
my $ligne2;
my $ligne3;
my $nomfich1;
my $dico_fr1;
my $ligne1;
my $dico_ang1;
my $ficdico_ang1;
my $nomfich2;
my $ajout1;
my $dico_ajoutang;
my $nomfich3;
my $ajout3;
my $fictexte_ang;
my $texte_ang;
my $nomfich4;
my $longueur1;
my $i;
my $mot1;


$trouve=0;

$nomfich=shift;
$nomfich1=shift;
$nomfich2=shift;
$nomfich3=shift;
$nomfich4=shift;


print ("Voulez-vous traduire un mot, O ou N ?");
$rep=<STDIN>;
chomp $rep;


if ($rep eq "O") {
	
	print ("Voulez-vous traduire un mot francais en anglais, 0 ou N ?");
	$rep2=<STDIN>;
	chomp $rep2;
	
	
	
	if ($rep2 eq "O") {
		print ("**********Dictionnaire francais anglais**********\n");
		print ("tapez le mot francais a traduire \n");
		$mot_fr=<STDIN>;
		chomp $mot_fr;
		
		open $ficdico_fr1,'<',"dico_fr1.txt" or die "fichier non ouvert!\n";
		while ($ligne=<$ficdico_fr1>) {
			if ($ligne=~/^$mot_fr /) {
				print ("$ligne\n");
				$trouve=1;
}
			
						
					else {
						
						if ($trouve==0) {
						open $ficdico_fr1,'>>',"dico_fr1.txt" or die "fichier non ouvert!\n";
						$ajout1="\n$mot_fr";
						print $ficdico_fr1 $ajout1;
						close $ficdico_fr1;
						open $ficdico_fr1,'<',"dico_fr1.txt" or die "fichier non ouvert!\n";
						print " ";
						
						$trouve=1;

}
}
}	 	
}

	else {
		if ($rep2 eq "N") {
			print ("**********Dictionnaire anglais francais**********\n");
			print ("tapez le mot anglais a traduire \n");
			$mot_ang=<STDIN>;
			chomp $mot_ang;
			
			open $ficdico_ang1,'<',"dico_ang1.txt" or die "fichier non ouvert!\n";
			while ($ligne1=<$ficdico_ang1>) {
				if ($ligne1=~/^$mot_ang /) {
					print ("$ligne1\n");
					
}
			
				}		
	
	}	
}	
}

else {
	if ($rep eq "N") {
		
		print ("Voulez-vous traduire un texte francais, O ou N ?\n");
		$rep3=<STDIN>;
		chomp $rep3;
		
		if ($rep3 eq "O") {
		
			print ("tapez le texte francais a traduire\n");
			$texte_fr=<STDIN>;
			chomp $texte_fr;
	
			open $fictexte_fr,'>>',"texte_fr.txt" or die "fichier non ouvert!\n";
			$ajout2="\n$texte_fr";
			print $fictexte_fr $ajout2;
			close $fictexte_fr;
			open $fictexte_fr,'<',"texte_fr.txt" or die "fichier non ouvert!\n";
			print " ";


			$longueur1=length($texte_fr);
$i=0;
$mot1="";

			while ($i<$longueur1){
				if (substr($texte_fr,$i,1) ne " ") {
		 		$mot1=$mot1.substr($texte_fr,$i,1);
}

		 	else {
			 
				print ("$mot1\n");
			 	$mot1="";
			 
}
			 if ($i==$longueur1-1) {
				print ( "$mot1\n");
				 
}
				 $i=$i+1;
				 
}


 
}	

		else {
			if ($rep3 eq "N") {
				
				print ("tapez le texte anglais a traduire\n");
				$texte_ang=<STDIN>;
				chomp $texte_ang;
				
				open $fictexte_ang,'>>',"texte_ang.txt" or die "fichier non ouvert!\n";
				$ajout3="\n$texte_ang";
				print $fictexte_ang $ajout3;
				close $fictexte_ang;
				open $fictexte_ang,'<',"texte_ang.txt" or die "fichier non ouvert!\n";
				print " ";

				while ($ligne3=<$fictexte_ang>) {
				print $ligne3;
	
}
}
}					
}
}



mon souci est de savoir si c possible de mettre $mot1 en tableau pour ensuite les comparer avec la partie traduction des lignes de mes fichiers dictionnaires ("jeu game" pour F/A et "game jeu" pour A/F) ou si j dois faire des boucles "for", une qui prendrait le mot sur une ligne et une qui parcourrait les lignes ...??

tu comprends ce k j veux faire ou pas ??....ptetr k ma facon d'expliker n'est pas très claire...

merci d'avance en tout cas !
0
karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 1
15 août 2007 à 11:19
juste pour dire que le fait d'avoir mis $mot1 en tableau ne me sert a rien puisk je veux traiter un texte et k ca ressorte en texte et pas en tableau...bref !
sinon j'ai rajouté la partie pour l'ajout des mots non connus et leur traduction dans le dico mais maintenant que je l'ai mise la partie traduction pure et simple de mots ne marche plus et je ne comprends pas pkoi ; autre chose : pour l'ajout dans le dico, seule l 'ajout dans le dico anglais marche vraiment et les mots apparaissent dans le dico a l'inverse du dico francais...sauf k'en enlevant la partie sur l'ajout des mots et de leur traduction dans le dico, la partie traduction remarche bien sûr mais pour le dico francais, les mots que j'ai voulu rajouter marchent aussi alors qu'ils ne sont pas ecrits dans le dico !!! va comprendre !!!
bref....
voila !
0
karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 1
15 août 2007 à 18:42
ben pour le script je n'arrete pas d'essayer...seulement quand je m'y mets j'ai l'esprit qui pense a tellement de choses en mm tps a propos de mon programme et la maniere de le faire que je m'y perds un peu...
sinon pour ce que tu m'as dit a propos des 2 scripts et tout , oui tkt pas c ce que je fai depuis le debut en changeant juste les variables...
au fait pour l'ajout des traductions dans les dico je me suis apercue qu'en fait ca marchait !! lol ...donc je suis contente
et la j bloque toujours sur la traduction de texte ( francais anglais pour le moment...aps je sais k j'aurais juste a copier coller changer les variables...)...je vais essayer de moins m'eparpiller...
merci pour ton script au fait mais je garde mon ecriture a moi...si je commence a ecrire autrement je ne vais plus m'en sortir...ya pas mal de trucs que je n'ai pas appris et que tu ecris toi (bien que j'aime apprendre de nouvelles choses là n'est pas le souci)...
bref
si jms je me perds de nouveau je te fais signe...
0
karinn Messages postés 49 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 10 mai 2009 1
16 août 2007 à 11:53
coucou je viens de decouvrir que la prof a mis des cours sur le site de la fac...y compris les commandes et les différentes ecritures de code que tu m'as montrées...
donc je vais te piquer ton ecriture lol pask c clair et net que c largement plus pratique...
bon il faut que je vois qd mm pour la traduction de texte pask je bloque tjs sur comment extraire de ma ligne la traduction d'unmot...mais bon vu les nouveaux cours que j'ai ca devrait aller je pense...je viens de finir de les lire mais je vais les approfondir...
et si j'ai u truc que je comprends pas ben j ferai appel a tes bons services ;-)
0