bonsoir,
pouvez vous me dire a quoi sert cette fonction et les caractères utilisé le "." et le "+"
grep { /.+/ }
merci pour votre attention
Version imprimable
bonsoir,
pouvez vous me dire a quoi sert cette fonction et les caractères utilisé le "." et le "+"
grep { /.+/ }
merci pour votre attention
Telle quelle, cette instruction ne fait rien. Il faudrait donner la ligne entière, le contexte.
La fonction grep prend en entrée une liste d’éléments (ou un tableau) et renvoie un autre tableau dans lequel les éléments ont été filtrés par le code dans le bloc après le grep.
Par exemple, le script uniligne suivant à la ligne de commande unix:
génère d'abord une liste de chiffres de 1 à 10; puis le grep filtre tous les éléments divisibles par 2 (le bloc {$_ % 2} renvoie 0, donc faux, pour les éléments divisibles par 2) et renvoie donc une liste de chiffres impairs entre 1 et 10; enfin, le 'print join " "' imprime les éléments renvoyés par le grep en ajoutant des espaces entre chaque élément (ce qui imprime donc "1 3 5 7 9").Code:
1
2 $ perl -e 'print join " ", grep {$_ % 2} 1..10' 1 3 5 7 9
Dans ton cas, le bloc de code associé au grep utilise une expression régulière: '.' reconnaît un caractère quelconque (sauf le caractère de saut de ligne) et le '+' dit qu'il en faut au moins 1. Bref, /.+/ renvoie vrai s'il y a au moins un caractère (autre que saut de ligne) dans la chaîne examinée et faux dans le cas contraire. Et le grep avec ce bloc de caractère filtre les éléments vides de la liste en entrée et ne renvoie que les éléments non vides.
Par exemple, si je définis le tableau @c comme suit:
ce tableau contient maintenant:Code:my @c = (1, 5, "toto", 7, "", 36, "titi", "", 42);
Les éléments d'indices 4 et 7 sont vides.Code:
1
2
3
4
5
6
7
8
9 0 1 1 5 2 'toto' 3 7 4 '' 5 36 6 'titi' 7 '' 8 42
Si maintenant je fais l'instruction suivante:
le tableau @d contient:Code:my @d = grep { /.+/ } @c;
Les deux éléments vides ont été éliminés.Code:
1
2
3
4
5
6
7 0 1 1 5 2 'toto' 3 7 4 36 5 'titi' 6 42
merci beaucoup pour votre reponse :ccool: