gilou Modérateur Modzilla | J'ai pas testé, mais a l'oeil nu, il y a trois erreurs:
Erreur pas grave mais qui va tout mettre sur une ligne
print MONFICHIER2 "$i $ligne/n"; c'est \n et non pas/n
erreur qui se répète avec MONFICHIER3 Erreur du copier-coller pas relu
open(MONFICHIER3,">/Translated/English.txt" ); $i=0; while($ligne =<MONFICHIER> ){ chomp($ligne); if ($ligne=~/FRENCH/){ $i++; print MONFICHIER3 "$i $ligne/n"; } } c'est if ($ligne=~/ENGLISH/){ Et l'erreur la plus grave:
quand on a lu une première fois MONFICHIER, il faut revenir au début avant de le relire une seconde fois.
print" le nombre de lignes en français est $i"; open(MONFICHIER3,">/Translated/English.txt" );
ça devrait être
print" le nombre de lignes en français est $i"; seek(MONFICHIER, 0, SEEK_SET);
open(MONFICHIER3,">/Translated/English.txt" );
Et un truc qui n'est pas une erreur, mais sans doute un oubli:
print" le nombre de lignes en français est $i"; ce serait mieux comme
print" le nombre de lignes en français est $i\n"; A part ça, le reste devrait tenir la route.
Une dernière remarque:
faire chomp($ligne); ou on vire le \n de la fin
puis
print MONFICHIER3 "$i $ligne/n"; ou on rajoute le \n supprimé
c'est du boulot inutile
while($ligne =<MONFICHIER> ){ if ($ligne=~/FRENCH/){ $i++; print MONFICHIER3 "$i $ligne"; } } ça fait la même chose avec une ligne de moins.
Citation :
Je sais que mon code est bien " primaire ", sans doute risible à vos yeux...
|
La philosophie de perl, c'est que l'essentiel, c'est de pouvoir coder quelque chose qui soit une solution a son problème. Il n'y a pas LA solution a un pb en perl, mais tout un tas de solutions, selon son niveau, et qu'aucune n'est "risible", tant qu'elle marche.
Bon, j'aurais sans doute écrit ceci ainsi:
Code :
#!/usr/bin/perl use strict; use warnings; use autodie; my ($infile, $outfile, $cnt); open $infile, "<", '/Translated/Bilingual.txt'; $cnt = 0; open $outfile, ">", '/Translated/French.txt'; while (<$infile> ) { print $outfile ++ $cnt, " $_" if (/FRENCH/ ); } print " Le nombre de lignes en français est $cnt\n"; seek($infile, 0, SEEK_SET ); $cnt = 0; open $outfile, ">", '/Translated/English.txt'; while (<$infile> ) { print $outfile ++ $cnt, " $_" if (/ENGLISH/ ); } print " Le nombre de lignes en anglais est $cnt\n";
|
A+, Message édité par gilou le 11-06-2013 à 22:44:45 ---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --
|