Code : Sélectionner tout - Visualiser dans une fenêtre à part
@files = grep{m/_([ATCG]+_[ATCG]+)_/} @files;
J'aimerais savoir comment ne garder dans @files que la partie de l'expression entre parenthèses?



Dans Perldoc au sujet de la fonction grep, il est mis
Note that $_ is an alias to the list value, so it can be used to modify the elements of the LIST. While this is useful and supported, it can cause bizarre results if the elements of LIST are not variables. Similarly, grep returns aliases into the original list, much as a for loop's index variable aliases the list elements. That is, modifying an element of a list returned by grep (for example, in a foreach , map or another grep) actually modifies the element in the original list. This is usually something to be avoided when writing clear code.
Les éléments de ma liste sont des noms de fichiers récupérés avec readdir. Sont-ils considérés comme des variables?
Donc, il faudrait que j'imbrique un autre grep, un for, un map ou un foreach au premier grep renvoyant les alias de la liste originale, ce qui est apparemment à éviter. Vaut-il mieux faire un for(my $i....){ if(/expreg/) et puis remplacer la valeur $file[$i] par la sous-séquence récupérée via l' expression régulière?


Merci pour votre aide,