Je suis en train de r=E9aliser un petit script qui me permet de
remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je
splite pour remplir deux tableaux, et ensuite je parcours mon fichier
texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de
petite taille)
sub parse_ligne
{
my $ligne =3D $_;
for ( my $i =3D 0 ; $i < $dictionnaire_taille-1 ; $i++ )
{
if ($ligne =3D~ m/$mot[$i]/gi)
{
$ligne =3D~ s/$mot[$i]/$remplacement[$i]/gi;
}
}
//print $ligne;
print `echo $ligne >> $path_sortie`;
}
Mon probleme, c'est que
- les accronymes ne sont pas remplac=E9s
- seule la derni=E8re ligne du fichier de d=E9part est dans le fichier de
sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Je suis en train de réaliser un petit script qui me permet de remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je splite pour remplir deux tableaux, et ensuite je parcours mon fichier texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de petite taille)
sub parse ligne { my $ligne = $ ; for ( my $i = 0 ; $i < $dictionnaire taille-1 ; $i++ ) { if ($ligne =~ m/$mot[$i]/gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gi; } } //print $ligne; print `echo $ligne >> $path sortie`; }
Mon probleme, c'est que - les accronymes ne sont pas remplacés - seule la dernière ligne du fichier de départ est dans le fichier de sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
avis d'un débutant : - un hash avec l'acronyme comme clé et la code html comme donnée. - test avec exists($hash{$key}) - un vrai fichier de sortie avec open(), print et close() plutôt que "print `echo $ligne >> $path sortie`"
-- klp
In article <1149511735.328655.174250@i40g2000cwc.googlegroups.com>,
"Timothée POISOT" <t.poisot@gmail.com> wrote:
Bonjour tous
Je suis en train de réaliser un petit script qui me permet de
remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je
splite pour remplir deux tableaux, et ensuite je parcours mon fichier
texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de
petite taille)
sub parse ligne
{
my $ligne = $ ;
for ( my $i = 0 ; $i < $dictionnaire taille-1 ; $i++ )
{
if ($ligne =~ m/$mot[$i]/gi)
{
$ligne =~ s/$mot[$i]/$remplacement[$i]/gi;
}
}
//print $ligne;
print `echo $ligne >> $path sortie`;
}
Mon probleme, c'est que
- les accronymes ne sont pas remplacés
- seule la dernière ligne du fichier de départ est dans le fichier de
sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
avis d'un débutant :
- un hash avec l'acronyme comme clé et la code html comme donnée.
- test avec exists($hash{$key})
- un vrai fichier de sortie avec open(), print et close() plutôt que
"print `echo $ligne >> $path sortie`"
Je suis en train de réaliser un petit script qui me permet de remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je splite pour remplir deux tableaux, et ensuite je parcours mon fichier texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de petite taille)
sub parse ligne { my $ligne = $ ; for ( my $i = 0 ; $i < $dictionnaire taille-1 ; $i++ ) { if ($ligne =~ m/$mot[$i]/gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gi; } } //print $ligne; print `echo $ligne >> $path sortie`; }
Mon probleme, c'est que - les accronymes ne sont pas remplacés - seule la dernière ligne du fichier de départ est dans le fichier de sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
avis d'un débutant : - un hash avec l'acronyme comme clé et la code html comme donnée. - test avec exists($hash{$key}) - un vrai fichier de sortie avec open(), print et close() plutôt que "print `echo $ligne >> $path sortie`"
-- klp
Timothée POISOT
kurtz le pirate wrote:
In article , "Timothée POISOT" wrote:
Bonjour tous
Je suis en train de réaliser un petit script qui me permet de remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je splite pour remplir deux tableaux, et ensuite je parcours mon fichier texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de petite taille)
sub parse ligne { my $ligne = $ ; for ( my $i = 0 ; $i < $dictionnaire taille-1 ; $i++ ) { if ($ligne =~ m/$mot[$i]/gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gi; } } //print $ligne; print `echo $ligne >> $path sortie`; }
Mon probleme, c'est que - les accronymes ne sont pas remplacés - seule la dernière ligne du fichier de départ est dans le fichier de sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
avis d'un débutant : - un hash avec l'acronyme comme clé et la code html comme donnée. - test avec exists($hash{$key}) - un vrai fichier de sortie avec open(), print et close() plutôt que "print `echo $ligne >> $path sortie`"
-- klp
Ca ne répond pas au probleme...
kurtz le pirate wrote:
In article <1149511735.328655.174250@i40g2000cwc.googlegroups.com>,
"Timothée POISOT" <t.poisot@gmail.com> wrote:
Bonjour tous
Je suis en train de réaliser un petit script qui me permet de
remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je
splite pour remplir deux tableaux, et ensuite je parcours mon fichier
texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de
petite taille)
sub parse ligne
{
my $ligne = $ ;
for ( my $i = 0 ; $i < $dictionnaire taille-1 ; $i++ )
{
if ($ligne =~ m/$mot[$i]/gi)
{
$ligne =~ s/$mot[$i]/$remplacement[$i]/gi;
}
}
//print $ligne;
print `echo $ligne >> $path sortie`;
}
Mon probleme, c'est que
- les accronymes ne sont pas remplacés
- seule la dernière ligne du fichier de départ est dans le fichier de
sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
avis d'un débutant :
- un hash avec l'acronyme comme clé et la code html comme donnée.
- test avec exists($hash{$key})
- un vrai fichier de sortie avec open(), print et close() plutôt que
"print `echo $ligne >> $path sortie`"
Je suis en train de réaliser un petit script qui me permet de remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je splite pour remplir deux tableaux, et ensuite je parcours mon fichier texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de petite taille)
sub parse ligne { my $ligne = $ ; for ( my $i = 0 ; $i < $dictionnaire taille-1 ; $i++ ) { if ($ligne =~ m/$mot[$i]/gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gi; } } //print $ligne; print `echo $ligne >> $path sortie`; }
Mon probleme, c'est que - les accronymes ne sont pas remplacés - seule la dernière ligne du fichier de départ est dans le fichier de sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
avis d'un débutant : - un hash avec l'acronyme comme clé et la code html comme donnée. - test avec exists($hash{$key}) - un vrai fichier de sortie avec open(), print et close() plutôt que "print `echo $ligne >> $path sortie`"
-- klp
Ca ne répond pas au probleme...
Rue des Prairies
Bonjour tous
Je suis en train de réaliser un petit script qui me permet de remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je splite pour remplir deux tableaux, et ensuite je parcours mon fichier texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de petite taille)
sub parse_ligne { my $ligne = $_; for ( my $i = 0 ; $i < $dictionnaire_taille-1 ; $i++ ) { if ($ligne =~ m/$mot[$i]/gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gi; } } //print $ligne; print `echo $ligne >> $path_sortie`; }
Mon probleme, c'est que - les accronymes ne sont pas remplacés - seule la dernière ligne du fichier de départ est dans le fichier de sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
Bonjour,
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_; D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1. Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Olivier.
Bonjour tous
Je suis en train de réaliser un petit script qui me permet de
remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je
splite pour remplir deux tableaux, et ensuite je parcours mon fichier
texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de
petite taille)
sub parse_ligne
{
my $ligne = $_;
for ( my $i = 0 ; $i < $dictionnaire_taille-1 ; $i++ )
{
if ($ligne =~ m/$mot[$i]/gi)
{
$ligne =~ s/$mot[$i]/$remplacement[$i]/gi;
}
}
//print $ligne;
print `echo $ligne >> $path_sortie`;
}
Mon probleme, c'est que
- les accronymes ne sont pas remplacés
- seule la dernière ligne du fichier de départ est dans le fichier de
sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
Bonjour,
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne)
auquel cas tu récupères $ligne par : my ($ligne) = @_;
D'autre part,
comment est calculée la variable $dictionnaire_taille ?
si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier
élément, il ne faut pas soustraire 1.
Que fait le // devant print $ligne ? Si c'est pour mettre en
commentaire, il faut mettre #.
Je suis en train de réaliser un petit script qui me permet de remplacer les acronymes par la balise <acronym> et le mot complet.
J'ai un fichier texte qui contient l'acronyme et le code html, que je splite pour remplir deux tableaux, et ensuite je parcours mon fichier texte a la recherche d'occurences des acronymes.
@mot contient les acronymes, et @remplacement contient le code html
J'utilise le code suivant, pour chaque ligne du fichier (*.txt de petite taille)
sub parse_ligne { my $ligne = $_; for ( my $i = 0 ; $i < $dictionnaire_taille-1 ; $i++ ) { if ($ligne =~ m/$mot[$i]/gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gi; } } //print $ligne; print `echo $ligne >> $path_sortie`; }
Mon probleme, c'est que - les accronymes ne sont pas remplacés - seule la dernière ligne du fichier de départ est dans le fichier de sortie
Est-ce que quelqu'un peut me donner un petit indice ?
Merci
Bonjour,
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_; D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1. Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Olivier.
Timothée POISOT
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne)
auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
D'autre part,
comment est calculée la variable $dictionnaire_taille ?
si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier
élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en
commentaire, il faut mettre #.
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Rue des Prairies
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Pas que je sache, ou alors $_[0]
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne)
auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Pas que je sache, ou alors $_[0]
D'autre part,
comment est calculée la variable $dictionnaire_taille ?
si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier
élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en
commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Pas que je sache, ou alors $_[0]
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Timothée POISOT
Rue des Prairies wrote:
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Pas que je sache, ou alors $_[0]
Si je l'affirme, c'est que je l'ai testé ;-)
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le derni er élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Et bien non. Je récupère effectivement la ligne a tester, mais pas moyen de remplacer...
Rue des Prairies wrote:
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne)
auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Pas que je sache, ou alors $_[0]
Si je l'affirme, c'est que je l'ai testé ;-)
D'autre part,
comment est calculée la variable $dictionnaire_taille ?
si c'est la taille du tableau @mot, ta boucle ne traitera pas le derni er
élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en
commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Et bien non. Je récupère effectivement la ligne a tester, mais pas
moyen de remplacer...
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Pas que je sache, ou alors $_[0]
Si je l'affirme, c'est que je l'ai testé ;-)
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le derni er élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Et bien non. Je récupère effectivement la ligne a tester, mais pas moyen de remplacer...
Paul Gaborit
À (at) 6 Jun 2006 02:55:57 -0700, "Timothée POISOT" écrivait (wrote):
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Ah !?! C'est un effet secondaire d'une partie du code que vous ne nous montrez pas. Dans le cas général, $_ ne fonctionnera pas.
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Cette dernière ligne n'a pas de sens en Perl... Donc la question reste entière : que vaut cette fameuse variable $dictionnaire_taille ?
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Montrez-nous donc du code réel plutôt qu'un pseudo code plus ou moins bien recopié...
Et la réponse au VRAI probleme ??
Elle est peut-être cachée dans le code que vous ne nous montrez pas...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 6 Jun 2006 02:55:57 -0700,
"Timothée POISOT" <t.poisot@gmail.com> écrivait (wrote):
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne)
auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Ah !?! C'est un effet secondaire d'une partie du code que vous ne nous
montrez pas. Dans le cas général, $_ ne fonctionnera pas.
D'autre part,
comment est calculée la variable $dictionnaire_taille ?
si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier
élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Cette dernière ligne n'a pas de sens en Perl... Donc la question reste
entière : que vaut cette fameuse variable $dictionnaire_taille ?
Que fait le // devant print $ligne ? Si c'est pour mettre en
commentaire, il faut mettre #.
Erreur de ma part
Montrez-nous donc du code réel plutôt qu'un pseudo code plus ou moins
bien recopié...
Et la réponse au VRAI probleme ??
Elle est peut-être cachée dans le code que vous ne nous montrez pas...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 6 Jun 2006 02:55:57 -0700, "Timothée POISOT" écrivait (wrote):
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Ah !?! C'est un effet secondaire d'une partie du code que vous ne nous montrez pas. Dans le cas général, $_ ne fonctionnera pas.
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Cette dernière ligne n'a pas de sens en Perl... Donc la question reste entière : que vaut cette fameuse variable $dictionnaire_taille ?
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Montrez-nous donc du code réel plutôt qu'un pseudo code plus ou moins bien recopié...
Et la réponse au VRAI probleme ??
Elle est peut-être cachée dans le code que vous ne nous montrez pas...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Rue des Prairies
Rue des Prairies wrote:
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_; $_ fonctionne aussi
Pas que je sache, ou alors $_[0]
Si je l'affirme, c'est que je l'ai testé ;-)
Non, tu récupères la valeur $_, qui vaut ce qu'elle vaut, mais pas la valeur passée en paramètre.
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1. @mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #. Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Et bien non. Je récupère effectivement la ligne a tester, mais pas moyen de remplacer...
Montre un peu plus le reste de ton code avec des exemples de lignes où effectuer la substitution. Comment ouvres-tu ton fichier de sortie ?
Rue des Prairies wrote:
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne)
auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Pas que je sache, ou alors $_[0]
Si je l'affirme, c'est que je l'ai testé ;-)
Non, tu récupères la valeur $_, qui vaut ce qu'elle vaut, mais pas la
valeur passée en paramètre.
D'autre part,
comment est calculée la variable $dictionnaire_taille ?
si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier
élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en
commentaire, il faut mettre #.
Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Et bien non. Je récupère effectivement la ligne a tester, mais pas
moyen de remplacer...
Montre un peu plus le reste de ton code avec des exemples de lignes où
effectuer la substitution.
Comment ouvres-tu ton fichier de sortie ?
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_; $_ fonctionne aussi
Pas que je sache, ou alors $_[0]
Si je l'affirme, c'est que je l'ai testé ;-)
Non, tu récupères la valeur $_, qui vaut ce qu'elle vaut, mais pas la valeur passée en paramètre.
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le dernier élément, il ne faut pas soustraire 1. @mot+=1; en fait
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #. Erreur de ma part
Et la réponse au VRAI probleme ??
Si tu récupères bien la ligne à traiter ça fonctionne.
Et bien non. Je récupère effectivement la ligne a tester, mais pas moyen de remplacer...
Montre un peu plus le reste de ton code avec des exemples de lignes où effectuer la substitution. Comment ouvres-tu ton fichier de sortie ?
Timothée POISOT
Paul Gaborit wrote:
À (at) 6 Jun 2006 02:55:57 -0700, "Timothée POISOT" écrivait (wrote):
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Ah !?! C'est un effet secondaire d'une partie du code que vous ne nous montrez pas. Dans le cas général, $_ ne fonctionnera pas.
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le derni er élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Cette dernière ligne n'a pas de sens en Perl... Donc la question reste entière : que vaut cette fameuse variable $dictionnaire_taille ?
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Montrez-nous donc du code réel plutôt qu'un pseudo code plus ou moins bien recopié...
Et la réponse au VRAI probleme ??
Elle est peut-être cachée dans le code que vous ne nous montrez pas...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
#!C:perlbienperl.exe -w use strict; use Warnings;
my @dictionnaire; my $dictionnaire_taille; my (@mot, @remplacement); my @fichier_entree; my @fichier_sortie; my $path_entree; my $path_sortie;
&head; $dictionnaire_taille = @dictionnaire;
sub head { print "Lecture du dictionnairen"; open (DIC, "+<dictionnaire.txt") or die "nLe fichier dictionnaire.txt doit etre present ($!) !"; my @dictionnaire = <DIC>; close (DIC); foreach ( @dictionnaire ) { my ($mot, $remplacement); ($mot, $remplacement) = split(/¤/, $_); unshift(@mot, $mot); unshift(@remplacement, $remplacement); print "$mottt$remplacementnn"; } }
&entree_fichier;
sub entree_fichier { print "nEntrez le nom du fichier a convertir:n"; print "t>>"; $path_entree = <STDIN>; chomp($path_entree); $path_sortie = $path_entree.'.LOMoutput'; open (ENTR, "+<".$path_entree); my @fichier_entree = <ENTR>; close (ENTR); foreach (@fichier_entree) { &parse_ligne($_); } }
sub parse_ligne { my $ligne = $_[0]; chomp($ligne); for ( my $i = 1 ; $i < $dictionnaire_taille ; $i++ ) { if ($ligne =~ m|@mot[$i]|gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gei; } } print `echo $ligne >> $path_sortie`; }
exemple de ligne du dictionnaire :
BLAST¤<acronym title="Basic Local Alignment Search Tool">BLAST</acronym>
Paul Gaborit wrote:
À (at) 6 Jun 2006 02:55:57 -0700,
"Timothée POISOT" <t.poisot@gmail.com> écrivait (wrote):
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne)
auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Ah !?! C'est un effet secondaire d'une partie du code que vous ne nous
montrez pas. Dans le cas général, $_ ne fonctionnera pas.
D'autre part,
comment est calculée la variable $dictionnaire_taille ?
si c'est la taille du tableau @mot, ta boucle ne traitera pas le derni er
élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Cette dernière ligne n'a pas de sens en Perl... Donc la question reste
entière : que vaut cette fameuse variable $dictionnaire_taille ?
Que fait le // devant print $ligne ? Si c'est pour mettre en
commentaire, il faut mettre #.
Erreur de ma part
Montrez-nous donc du code réel plutôt qu'un pseudo code plus ou moins
bien recopié...
Et la réponse au VRAI probleme ??
Elle est peut-être cachée dans le code que vous ne nous montrez pas...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
#!C:perlbienperl.exe -w
use strict;
use Warnings;
my @dictionnaire;
my $dictionnaire_taille;
my (@mot, @remplacement);
my @fichier_entree;
my @fichier_sortie;
my $path_entree;
my $path_sortie;
&head;
$dictionnaire_taille = @dictionnaire;
sub head
{
print "Lecture du dictionnairen";
open (DIC, "+<dictionnaire.txt") or die "nLe fichier dictionnaire.txt
doit etre present ($!) !";
my @dictionnaire = <DIC>;
close (DIC);
foreach ( @dictionnaire )
{
my ($mot, $remplacement);
($mot, $remplacement) = split(/¤/, $_);
unshift(@mot, $mot);
unshift(@remplacement, $remplacement);
print "$mottt$remplacementnn";
}
}
&entree_fichier;
sub entree_fichier
{
print "nEntrez le nom du fichier a convertir:n";
print "t>>";
$path_entree = <STDIN>;
chomp($path_entree);
$path_sortie = $path_entree.'.LOMoutput';
open (ENTR, "+<".$path_entree);
my @fichier_entree = <ENTR>;
close (ENTR);
foreach (@fichier_entree)
{
&parse_ligne($_);
}
}
sub parse_ligne
{
my $ligne = $_[0];
chomp($ligne);
for ( my $i = 1 ; $i < $dictionnaire_taille ; $i++ )
{
if ($ligne =~ m|@mot[$i]|gi)
{
$ligne =~ s/$mot[$i]/$remplacement[$i]/gei;
}
}
print `echo $ligne >> $path_sortie`;
}
exemple de ligne du dictionnaire :
BLAST¤<acronym title="Basic Local Alignment Search
Tool">BLAST</acronym>
À (at) 6 Jun 2006 02:55:57 -0700, "Timothée POISOT" écrivait (wrote):
Je suppose que appelles parse_ligne comme ça : &parse_ligne($ligne) auquel cas tu récupères $ligne par : my ($ligne) = @_;
$_ fonctionne aussi
Ah !?! C'est un effet secondaire d'une partie du code que vous ne nous montrez pas. Dans le cas général, $_ ne fonctionnera pas.
D'autre part, comment est calculée la variable $dictionnaire_taille ? si c'est la taille du tableau @mot, ta boucle ne traitera pas le derni er élément, il ne faut pas soustraire 1.
@mot+=1; en fait
Cette dernière ligne n'a pas de sens en Perl... Donc la question reste entière : que vaut cette fameuse variable $dictionnaire_taille ?
Que fait le // devant print $ligne ? Si c'est pour mettre en commentaire, il faut mettre #.
Erreur de ma part
Montrez-nous donc du code réel plutôt qu'un pseudo code plus ou moins bien recopié...
Et la réponse au VRAI probleme ??
Elle est peut-être cachée dans le code que vous ne nous montrez pas...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
#!C:perlbienperl.exe -w use strict; use Warnings;
my @dictionnaire; my $dictionnaire_taille; my (@mot, @remplacement); my @fichier_entree; my @fichier_sortie; my $path_entree; my $path_sortie;
&head; $dictionnaire_taille = @dictionnaire;
sub head { print "Lecture du dictionnairen"; open (DIC, "+<dictionnaire.txt") or die "nLe fichier dictionnaire.txt doit etre present ($!) !"; my @dictionnaire = <DIC>; close (DIC); foreach ( @dictionnaire ) { my ($mot, $remplacement); ($mot, $remplacement) = split(/¤/, $_); unshift(@mot, $mot); unshift(@remplacement, $remplacement); print "$mottt$remplacementnn"; } }
&entree_fichier;
sub entree_fichier { print "nEntrez le nom du fichier a convertir:n"; print "t>>"; $path_entree = <STDIN>; chomp($path_entree); $path_sortie = $path_entree.'.LOMoutput'; open (ENTR, "+<".$path_entree); my @fichier_entree = <ENTR>; close (ENTR); foreach (@fichier_entree) { &parse_ligne($_); } }
sub parse_ligne { my $ligne = $_[0]; chomp($ligne); for ( my $i = 1 ; $i < $dictionnaire_taille ; $i++ ) { if ($ligne =~ m|@mot[$i]|gi) { $ligne =~ s/$mot[$i]/$remplacement[$i]/gei; } } print `echo $ligne >> $path_sortie`; }
exemple de ligne du dictionnaire :
BLAST¤<acronym title="Basic Local Alignment Search Tool">BLAST</acronym>
Paul Gaborit
Les bugs sont biens là... Je corrige les principaux au fur et à mesure mais il y aurait beaucoup à redire.
À (at) 6 Jun 2006 04:53:09 -0700, "Timothée POISOT" écrivait (wrote):
#!C:perlbienperl.exe -w use strict; use Warnings;
use warnings; # pas de majuscule !
my @dictionnaire; my $dictionnaire_taille; my (@mot, @remplacement); my @fichier_entree; my @fichier_sortie; my $path_entree; my $path_sortie;
# déclarer les variables là où elles sont nécessaires...
&head;
head(); # la notation &head n'a pas le sens que vous croyez... # Il vaut mieux appeler une fonction par son nom et une liste de # paramètres (éventuellement vide) et sans & devant !
$dictionnaire_taille = @dictionnaire;
$dictionnaire_taille = @mot; # @dictionnaire ne devrait exister que dans 'head'
sub head { print "Lecture du dictionnairen"; open (DIC, "+<dictionnaire.txt") or die "nLe fichier dictionnaire.txt doit etre present ($!) !";
open (DIC, "<", "dictionnaire.txt") or die "Le fichier 'dictionnaire.txt' doit etre present : $!";
# le mode "+<" ne vous sert strictement à rien ici
my @dictionnaire = <DIC>; close (DIC); foreach ( @dictionnaire ) { my ($mot, $remplacement); ($mot, $remplacement) = split(/¤/, $_); unshift(@mot, $mot); unshift(@remplacement, $remplacement); print "$mottt$remplacementnn"; } }
&entree_fichier;
sub entree_fichier { print "nEntrez le nom du fichier a convertir:n"; print "t>>"; $path_entree = <STDIN>; chomp($path_entree); $path_sortie = $path_entree.'.LOMoutput'; open (ENTR, "+<".$path_entree); my @fichier_entree = <ENTR>; close (ENTR); foreach (@fichier_entree) { &parse_ligne($_); } }
sub parse_ligne { my $ligne = $_[0]; chomp($ligne); for ( my $i = 1 ; $i < $dictionnaire_taille ; $i++ )
for ( my $i = 0 ; $i < $dictionnaire_taille ; $i++ )
# les indices commencent à zéro
{ if ($ligne =~ m|@mot[$i]|gi)
if ($ligne =~ m|$mot[$i]|gi)
# $mot[$i] n'a pas le même sens que @mot[$i] # Il est inutile de préfixer les crochets puisque l'interpolation des # variables a lieu avant l'interprétation de la regexp par le moteur # de rexgexp.
print "$lignen"; # ne passe pas par un appel à un shell externe
# pour pouvoir écrire dans un fichier, il faudrait l'ouvrir en # écriture au préalable.
}
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Les bugs sont biens là... Je corrige les principaux au fur et à mesure
mais il y aurait beaucoup à redire.
À (at) 6 Jun 2006 04:53:09 -0700,
"Timothée POISOT" <t.poisot@gmail.com> écrivait (wrote):
#!C:perlbienperl.exe -w
use strict;
use Warnings;
use warnings; # pas de majuscule !
my @dictionnaire;
my $dictionnaire_taille;
my (@mot, @remplacement);
my @fichier_entree;
my @fichier_sortie;
my $path_entree;
my $path_sortie;
# déclarer les variables là où elles sont nécessaires...
&head;
head();
# la notation &head n'a pas le sens que vous croyez...
# Il vaut mieux appeler une fonction par son nom et une liste de
# paramètres (éventuellement vide) et sans & devant !
$dictionnaire_taille = @dictionnaire;
$dictionnaire_taille = @mot;
# @dictionnaire ne devrait exister que dans 'head'
sub head
{
print "Lecture du dictionnairen";
open (DIC, "+<dictionnaire.txt") or die "nLe fichier dictionnaire.txt
doit etre present ($!) !";
open (DIC, "<", "dictionnaire.txt")
or die "Le fichier 'dictionnaire.txt' doit etre present : $!";
# le mode "+<" ne vous sert strictement à rien ici
my @dictionnaire = <DIC>;
close (DIC);
foreach ( @dictionnaire )
{
my ($mot, $remplacement);
($mot, $remplacement) = split(/¤/, $_);
unshift(@mot, $mot);
unshift(@remplacement, $remplacement);
print "$mottt$remplacementnn";
}
}
&entree_fichier;
sub entree_fichier
{
print "nEntrez le nom du fichier a convertir:n";
print "t>>";
$path_entree = <STDIN>;
chomp($path_entree);
$path_sortie = $path_entree.'.LOMoutput';
open (ENTR, "+<".$path_entree);
my @fichier_entree = <ENTR>;
close (ENTR);
foreach (@fichier_entree)
{
&parse_ligne($_);
}
}
sub parse_ligne
{
my $ligne = $_[0];
chomp($ligne);
for ( my $i = 1 ; $i < $dictionnaire_taille ; $i++ )
for ( my $i = 0 ; $i < $dictionnaire_taille ; $i++ )
# les indices commencent à zéro
{
if ($ligne =~ m|@mot[$i]|gi)
if ($ligne =~ m|$mot[$i]|gi)
# $mot[$i] n'a pas le même sens que @mot[$i]
# Il est inutile de préfixer les crochets puisque l'interpolation des
# variables a lieu avant l'interprétation de la regexp par le moteur
# de rexgexp.
Les bugs sont biens là... Je corrige les principaux au fur et à mesure mais il y aurait beaucoup à redire.
À (at) 6 Jun 2006 04:53:09 -0700, "Timothée POISOT" écrivait (wrote):
#!C:perlbienperl.exe -w use strict; use Warnings;
use warnings; # pas de majuscule !
my @dictionnaire; my $dictionnaire_taille; my (@mot, @remplacement); my @fichier_entree; my @fichier_sortie; my $path_entree; my $path_sortie;
# déclarer les variables là où elles sont nécessaires...
&head;
head(); # la notation &head n'a pas le sens que vous croyez... # Il vaut mieux appeler une fonction par son nom et une liste de # paramètres (éventuellement vide) et sans & devant !
$dictionnaire_taille = @dictionnaire;
$dictionnaire_taille = @mot; # @dictionnaire ne devrait exister que dans 'head'
sub head { print "Lecture du dictionnairen"; open (DIC, "+<dictionnaire.txt") or die "nLe fichier dictionnaire.txt doit etre present ($!) !";
open (DIC, "<", "dictionnaire.txt") or die "Le fichier 'dictionnaire.txt' doit etre present : $!";
# le mode "+<" ne vous sert strictement à rien ici
my @dictionnaire = <DIC>; close (DIC); foreach ( @dictionnaire ) { my ($mot, $remplacement); ($mot, $remplacement) = split(/¤/, $_); unshift(@mot, $mot); unshift(@remplacement, $remplacement); print "$mottt$remplacementnn"; } }
&entree_fichier;
sub entree_fichier { print "nEntrez le nom du fichier a convertir:n"; print "t>>"; $path_entree = <STDIN>; chomp($path_entree); $path_sortie = $path_entree.'.LOMoutput'; open (ENTR, "+<".$path_entree); my @fichier_entree = <ENTR>; close (ENTR); foreach (@fichier_entree) { &parse_ligne($_); } }
sub parse_ligne { my $ligne = $_[0]; chomp($ligne); for ( my $i = 1 ; $i < $dictionnaire_taille ; $i++ )
for ( my $i = 0 ; $i < $dictionnaire_taille ; $i++ )
# les indices commencent à zéro
{ if ($ligne =~ m|@mot[$i]|gi)
if ($ligne =~ m|$mot[$i]|gi)
# $mot[$i] n'a pas le même sens que @mot[$i] # Il est inutile de préfixer les crochets puisque l'interpolation des # variables a lieu avant l'interprétation de la regexp par le moteur # de rexgexp.