Bonjour à tous

J'avais posté sur ce forum il y a quelques jours, et j'avais eu un super coup de main de la part d'un forumeur

Comme j'ai de nouveau des problèmes , je reviens vers vous

J'ai un fichier texte de ce style là:

salut_toi comment_vas pas_mal et_toi_mon bichon_des_alpes
alalala_je ne_sais_plus quoi_mettre
comme_texte
pfff


En gros un texte de n lignes, avec y mots dans chaque ligne (les mots sont séparés par des espaces).

J'ai besoin de savoir combien il y a de mots dans chaque ligne. Ca donnerait:

4
3
2
1


Le nouveau fichier peut écraser l'ancien, ce n'est pas un soucis.
J'ai un début de code, qui donne ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#!/usr/bin/env perl
 
my $fileName=$ARGV[0];
 
open(FILE,$fileName) || die("Cannot Open File");
my(@fcont) = <FILE>;
close FILE;
 
open(FOUT,">$fileName") || die("Cannot Open File");
foreach $line (@fcont) {
    $line =~ grep -c \/t;
    $compte=$line + 1
    print FOUT $compte;
}
close FOUT;
En fait je me dit qu'il suffit de compter le nombre d'espace de chaque ligne + 1 pour avoir le nombre de mot par ligne.

Mais je ne suis pas sur du tout que mon script soit bon (surtout le grep). Si vous avez des conseils, n'hésitez pas.

D'ailleurs j'ai une autre petite question:

idéalement mon fichier de sortie serait comme ca:
OTU1 4
OTU2 3
OTU3 2
OTU4 1


Mais la je ne sais pas du tout comment aborder le probleme

Merci d'avance pour vos conseils!

Yonathan