![]() |
| |||||||
| S'inscrire | FAQ | Membres | Calendrier | Recherche | Messages du jour | Marquer les forums comme lus |
![]() |
| LinkBack | Outils de la discussion | Modes d'affichage |
| |||
| In article <g83u3h$1sp3$1***talisker.lacave.net>, mpg <mpg***elzevir.fr> wrote: >Bonjour, > >grâce aux messages d'erreurs reçus en traitant un fichier mal formaté, je me >suis rendu compte que dans > >grep (/$motif/, ***liste); > >la regexp semble être recompilée à pour chaque élément de la liste. Même si >pour ce script précis la performance n'est pas un problème, en général >j'imagine que c'est très mauvais. > >Y a-t-il un moyen d'indiquer à Perl que $motif ne va pas changer au cours du >parcours de la liste (il changera plus tard, mais c'est un autre problème) >et que par conséquent il peut compiler une fois en début de liste et c'est >tout ? Oui, suffit de mettre /$motif/o perlre renvoie a perlop qui le documente... j'avoue que ca n'est pas immediat a trouver... |
| | ||||
| ||||
| |
| |||
| 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... |
| |
| |
![]() |
| Tags: recompiler, regex |
| Outils de la discussion | |
| Modes d'affichage | |
| |
| ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| regex | miterrandir | Newsgroup fr.comp.os.unix | 2 | 24/01/2008 11h30 |
| [HS] RegEx? | Mathieu G | Newsgroup fr.comp.text.tex | 8 | 14/12/2007 09h37 |
| grep & regex | kael | Newsgroup fr.comp.lang.python | 8 | 01/09/2007 08h34 |
| regex pour nom de variable | Sebosac | Newsgroup alt.fr.comp.lang.php | 0 | 17/05/2007 19h12 |
| Les exemples à recompiler avec BeOS 5 PersonalEdition | PIRONNEAU Stéphane | Newsgroup fr.comp.sys.be | 4 | 09/07/2004 19h56 |