OVH Cloud OVH Cloud

conseil

6 réponses
Avatar
nicolas_laurent545
Bonjour

Comment faire pour imprimer les mots dans chaque fichier plus le nom du fichier.

while (<>) {
my @words = split(/\W*\s+\W*/, $words); # split
print "words$\n";
}



raisin -- fichier in1.txt
cerise -- fichier in1.txt
melon -- fichier in1.txt

cerise -- fichier in2.txt
melon -- fichier in2.txt

Merci

6 réponses

Avatar
jl_morel
Dans l'article ,
a dit...

Comment faire pour imprimer les mots dans chaque fichier plus le nom du
fichier.


while (<>) {
my @words = split(/W*s+W*/, $words); # split
print "words$n";
}



raisin -- fichier in1.txt
cerise -- fichier in1.txt
melon -- fichier in1.txt

cerise -- fichier in2.txt
melon -- fichier in2.txt



Si j'ai bien compris la question :

while (<>) {
for $a (split) {print "$a -- fichier $ARGVn"}
}

--
J-L.M.

Avatar
nicolas_laurent545
Vous m'avez compris. Merci. Mais seulement si j'ajoute
-- fichier $ARGVn"} à mon petit script qui donne un nombre a chaque
mot ça ne fonctionne pas. Mes premiers pas vers la programmation..
Merci encore.


while (<>) {
my @words = split(/W*s+W*/, $_); # split
foreach my $num ( 0 .. $#words) {
{print "$words[$num], -- fichier $ARGVn"}

}
}



(Jean-Louis MOREL) wrote in message news:<42432b43$0$11701$...
Dans l'article ,
a dit...

Comment faire pour imprimer les mots dans chaque fichier plus le nom du
fichier.


while (<>) {
my @words = split(/W*s+W*/, $words); # split
print "words$n";
}



raisin -- fichier in1.txt
cerise -- fichier in1.txt
melon -- fichier in1.txt

cerise -- fichier in2.txt
melon -- fichier in2.txt



Si j'ai bien compris la question :

while (<>) {
for $a (split) {print "$a -- fichier $ARGVn"}
}



Avatar
jl_morel
Dans l'article ,
a dit...

Vous m'avez compris. Merci. Mais seulement si j'ajoute
-- fichier $ARGVn"} à mon petit script qui donne un nombre a chaque
mot ça ne fonctionne pas. Mes premiers pas vers la programmation..
Merci encore.


while (<>) {
my @words = split(/W*s+W*/, $_); # split
foreach my $num ( 0 .. $#words) {
{print "$words[$num], -- fichier $ARGVn"}

}
}



Qu'est-ce qui ne fonctionne pas ?
Ce script tourne bien pour moi. Le seul problème que je vois c'est le motif
du split /W*s+W*/. Ce qui sépare les mots c'est une "espace" au moins
(s+) avec devant ou derrière 0 ou plusieurs "non caractères" (W*).

Par défaut W vaut [^a-zA-Z0-9]. Si les fichiers que vous traitez sont en
français un mot comme 'à ' passe à la trappe; il est considéré comme un
séparateur.

Vous pouvez inclure les caractères français en utilisant les locales.
Ajoutez avant votre boucle :

use POSIX qw/ locale_h /;
setlocale LC_ALL, 'fr';
use locale;

Voir perllocale :
http://www.bribes.org/perl/docfr/perllocale.html

HTH

--
J-L.M.
http://www.bribes.org/perl

Avatar
nicolas_laurent545
(Jean-Louis MOREL) wrote in message news:<424465ad$0$19315$...
Dans l'article ,
a dit...

Vous m'avez compris. Merci. Mais seulement si j'ajoute
-- fichier $ARGVn"} à mon petit script qui donne un nombre a chaque
mot ça ne fonctionne pas. Mes premiers pas vers la programmation..
Merci encore.


while (<>) {
my @words = split(/W*s+W*/, $_); # split
foreach my $num ( 0 .. $#words) {
{print "$words[$num], -- fichier $ARGVn"}

}
}



Qu'est-ce qui ne fonctionne pas ?
Ce script tourne bien pour moi. Le seul problème que je vois c'est le motif
du split /W*s+W*/. Ce qui sépare les mots c'est une "espace" au moins
(s+) avec devant ou derrière 0 ou plusieurs "non caractères" (W*).

Par défaut W vaut [^a-zA-Z0-9]. Si les fichiers que vous traitez sont en
français un mot comme 'à ' passe à la trappe; il est considéré comme un
séparateur.

Vous pouvez inclure les caractères français en utilisant les locales.
Ajoutez avant votre boucle :

use POSIX qw/ locale_h /;
setlocale LC_ALL, 'fr';
use locale;

Voir perllocale :
http://www.bribes.org/perl/docfr/perllocale.html

HTH


Ce script n'affiche pas le nom du fichier.
si on a la phrase
opera raisin cerise je voudrais afficher
1 opera -- fichier in.txt
2 raisin -- fichier in.txt
3 cerise -- fichier in.txt

Encore merci


Avatar
jl_morel
Dans l'article ,
a dit...

Ce script n'affiche pas le nom du fichier.
si on a la phrase
opera raisin cerise je voudrais afficher
1 opera -- fichier in.txt
2 raisin -- fichier in.txt
3 cerise -- fichier in.txt



Le script contenu dans votre post précédent affiche bien le nom de fichier
après chaque mot. Êtes-vous sûr d'avoir fait un couper/coller sans
modification ? Que contient la ligne de commande quand vous appelez le
script ?

--
J-L.M.
http://www.bribes.org/perl

Avatar
nicolas_laurent545
(Jean-Louis MOREL) wrote in message news:<424572f3$0$3114$...
Dans l'article ,
a dit...

Ce script n'affiche pas le nom du fichier.
si on a la phrase
opera raisin cerise je voudrais afficher
1 opera -- fichier in.txt
2 raisin -- fichier in.txt
3 cerise -- fichier in.txt



Le script contenu dans votre post précédent affiche bien le nom de fichier
après chaque mot. Êtes-vous sûr d'avoir fait un couper/coller sans
modification ? Que contient la ligne de commande quand vous appelez le
script ?


Merci, j'ai réglé mon petit problème.
A bientôt