Afficher un message

  #2 (permalink)  
Vieux 15/08/2008, 14h41
Marc Espie
 
Messages: n/a
Par défaut Re: ne pas recompiler une regex

In article <g840cj$25rn$1***talisker.lacave.net>, mpg <mpg***elzevir.fr> wrote:
>Le (on) vendredi 15 août 2008 14:58, Marc Espie a écrit (wrote) :
>
>> Oui, suffit de mettre /$motif/o
>>
>> perlre renvoie a perlop
>> qui le documente... j'avoue que ca n'est pas immediat a trouver...

>
>Merci beaucoup. Par contre même après avoir lu la partie correspondante de
>perlop, j'ai du mal à comprendre la « portée » du truc. En fait ma
>situation est un peu comme ça :
>
>for $motif (***listemotifs) {
> &fairedestrucs() if (grep (/$motif/o, ***autreliste));
>}
>
>Après essai, j'ai l'impression que ça ne marche plus si je rajoute le
>remplace /$motif/ par /$motif/o (par contre ça va en effet plus vite).

Oui, il compile une seule fois.


>Est-ce que ça veut dire que si je voulais optimiser le truc, je devrais
>passer par des construction plus sophistiquées avec qr() ?


Oui, c'est pas si complique que ca note.

Genre:
for my $motif (***listemotifs) {
my $re = qr/$motif/o;
fairedestrucs if grep $re, ***autreliste;
}

et tu peux te passer du $re intermediaire avec un map:
for my $motif (map {qr/$_/o} ***listemotifs) {
fairedestrucs if grep $motif, ***autreliste;
}

ou approchant...
Réponse avec citation
 
Page generated in 0,13102 seconds with 9 queries