[PERL]pb avec la fonction grep
Résolu/Fermé
A voir également:
- [PERL]pb avec la fonction grep
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
11 réponses
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
18 nov. 2006 à 23:48
18 nov. 2006 à 23:48
Salut,
essaie ça (je sauvegarde dans le tableau tous les consonnes du fichier lettres)
P.S. A adapter à ton cas
essaie ça (je sauvegarde dans le tableau tous les consonnes du fichier lettres)
#!/usr/bin/perl use warnings;use strict; my @res; open F_LIRE,"lettres" or die "E/S: $!\n"; while( my $l=<F_LIRE> ){ chomp($l); for my $z(split //,$l){ push @res,$z unless grep { /$z/ } qw/a e i o u/; } } print "@res\n";lami20j
P.S. A adapter à ton cas
Salut Lami20j et merci pour ta réponse !!
J'ai testé le code que tu m'as fourni mais hélas il ne marche point, j'ai le message d'erreur :
J'ai un peu tester encore cette aprem de foutre dans ce foutu tableau les lettres uniques contenus dans le fichier mais en vain...
J'ai testé le code que tu m'as fourni mais hélas il ne marche point, j'ai le message d'erreur :
Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE / at ./1 line 13, <F_LIRE> line 2.
J'ai un peu tester encore cette aprem de foutre dans ce foutu tableau les lettres uniques contenus dans le fichier mais en vain...
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
19 nov. 2006 à 16:16
19 nov. 2006 à 16:16
Affiche ton code complet pour voir, chez moi il n'y a pas de regex.
Et donne aussi ton fichier (mets le sur cjoint.com)
Ce que je t'ai donné c'est une exemple, mais on va tourner en ronde si je ne sais pas ce que tu fait
lami20j
Et donne aussi ton fichier (mets le sur cjoint.com)
Ce que je t'ai donné c'est une exemple, mais on va tourner en ronde si je ne sais pas ce que tu fait
lami20j
Voilà le lien de mon fichier
https://www.cjoint.com/?ltsfh4JqMF
J'ai copier/coller le code que tu m'as fourni pour tester ce que ça faisait, mais c'est là que j'ai eu le messages d'erreur cité.
Merci encore.
https://www.cjoint.com/?ltsfh4JqMF
J'ai copier/coller le code que tu m'as fourni pour tester ce que ça faisait, mais c'est là que j'ai eu le messages d'erreur cité.
Merci encore.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
19 nov. 2006 à 18:15
19 nov. 2006 à 18:15
J'ai besoin du fichier toto (sur cjoint.com ), pas le script qu'il fallait le copier ici sur ccm.
vu ton code déjà il y a des problème
if avec sans instructions
tu travaille sur le même tableau @tablo
et à vrai dire je ne comprends pas ce que tu veux
si tu as besoin de tout les lettres d'un fichier alors c'est vraiment simple
je vois que tu initialise le @tableo avec "z"
je ne comprends pas!!!!!
lami20j
vu ton code déjà il y a des problème
if avec sans instructions
tu travaille sur le même tableau @tablo
et à vrai dire je ne comprends pas ce que tu veux
si tu as besoin de tout les lettres d'un fichier alors c'est vraiment simple
je vois que tu initialise le @tableo avec "z"
je ne comprends pas!!!!!
lami20j
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
19 nov. 2006 à 18:28
19 nov. 2006 à 18:28
Re,
sans vouloir t'ofenser je constate que ton niveau en Perl est du débutant mal renseigné
Quand je vois ce but du code
Pour chaque élément du tableau, affiche l'élément
lami20j
sans vouloir t'ofenser je constate que ton niveau en Perl est du débutant mal renseigné
Quand je vois ce but du code
$k = 0; foreach(@tablo){ print $tablo[$k]; $k++; }je peux te dire que tu n'as pas compris la boucle foreach
foreach(@tablo){ print "$_\n"; }ou
foreach my $element ( @tablo ){ print "$element\n"; }ou même
$"="\n"; print "@tablo";font la même chose (affichage des éléments du tableau, un element par ligne
Pour chaque élément du tableau, affiche l'élément
lami20j
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
19 nov. 2006 à 18:37
19 nov. 2006 à 18:37
Re,
pour l'info
je teste ton code sur un fichier quelconque et j'obtiens le résultat z (c'est normal vu ton code )
en revanche je teste le mien et j'obtiens toutes les consonnes
pas de messages d'erreur regex
donc donne moi ton fichier toto, ensuite explique exactement ce que tu veux obtenir et je t'enverrai le script
pas besoin d'essayer de debugger ton code puisqu'il est très mal conçu, mieux vaut apprendre des bonnes habitudes et de lire la documentation.
comme toujours, ne prends pas mal ce que je te dit, on est tous débutans un jour, mais surtout quand on est débutant il faut lire, se renseigner, ce qui ne veut pas dire qu'après il faut arrêter de lire :-))
lami20j
pour l'info
je teste ton code sur un fichier quelconque et j'obtiens le résultat z (c'est normal vu ton code )
en revanche je teste le mien et j'obtiens toutes les consonnes
pas de messages d'erreur regex
donc donne moi ton fichier toto, ensuite explique exactement ce que tu veux obtenir et je t'enverrai le script
pas besoin d'essayer de debugger ton code puisqu'il est très mal conçu, mieux vaut apprendre des bonnes habitudes et de lire la documentation.
comme toujours, ne prends pas mal ce que je te dit, on est tous débutans un jour, mais surtout quand on est débutant il faut lire, se renseigner, ce qui ne veut pas dire qu'après il faut arrêter de lire :-))
lami20j
Re
T'inquiète je le prends pas mal :) j'ai commencé le perl depuis mercredi sans vraiment de cours de la part du prof, j'ai donc télécharger une doc avec les différentes commande.
Le fichier toto c'est juste un simple fichier comprenant une phrase quelconque.
Mon script dois dire combien le fichier toto compte de 'a', de 'b', de 'c' ... . Pour cela, l'idée de mon IF était de dire, si tu ne trouves pas la lettre examiné dans le tableau, ALORS tu l'insères en fin de tableau. Au finale je me retrouve avec un tableau contenant les lettres uniques de ce fichier, après il faut déterminer le nombre de fois que la lettre à été trouvé.
PS : c'était juste un test l'initialisation de 'z' dans le première cellule du tableau. Je pensais que je l'avais virer avant de te filer le code.
T'inquiète je le prends pas mal :) j'ai commencé le perl depuis mercredi sans vraiment de cours de la part du prof, j'ai donc télécharger une doc avec les différentes commande.
Le fichier toto c'est juste un simple fichier comprenant une phrase quelconque.
Mon script dois dire combien le fichier toto compte de 'a', de 'b', de 'c' ... . Pour cela, l'idée de mon IF était de dire, si tu ne trouves pas la lettre examiné dans le tableau, ALORS tu l'insères en fin de tableau. Au finale je me retrouve avec un tableau contenant les lettres uniques de ce fichier, après il faut déterminer le nombre de fois que la lettre à été trouvé.
PS : c'était juste un test l'initialisation de 'z' dans le première cellule du tableau. Je pensais que je l'avais virer avant de te filer le code.
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
19 nov. 2006 à 20:02
19 nov. 2006 à 20:02
Mon script dois dire combien le fichier toto compte de 'a', de 'b', de 'c' ... .
ok, maintenant j'ai compris ce que tu veux
voici le script( et c'est bien plus simple maintenant que je sais ce que tu veux :-))
ok, maintenant j'ai compris ce que tu veux
voici le script( et c'est bien plus simple maintenant que je sais ce que tu veux :-))
#!/usr/bin/perl use warnings;use strict; my %nb_lettres; open F_LIRE,"fichier.txt" or die "E/S: $!\n"; while( my $l=<F_LIRE> ){ foreach (split //,$l){ $nb_lettres{$_}++ if /[a-z]/i; } } foreach (sort keys %nb_lettres){ printf"Il y a %5s de %s\n",$nb_lettres{$_},$_; } __END__lami20j
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
19 nov. 2006 à 20:27
19 nov. 2006 à 20:27
Voilà encore une solution, c'est encore plus perlien ;-)
#!/usr/bin/perl use warnings;use strict; my %nb_lettres; grep { $nb_lettres{$_}++ if /[a-z]/i } split //,`cat fichier.txt`; foreach (sort keys %nb_lettres){ printf"Il y a %5s de %s\n",$nb_lettres{$_},$_; } __END__lami20j