Dans le cas suivant compiler la regex a plus de sens :
1 2 3 4 5 6
| my $variable = <STDIN>;
while( <> ) {
s/$variable/bye/g;
print;
} |
En effet, perl (l'interpréteur) ne peut pas deviner que $variable ne changera pas d'une itération de la boucle à l'autre, la regex sera donc recompilée à chaque itération, avec une pénalité en temps d'exécution (probablement négligeable ici, mais pas dans tous les cas)...
C'est une bonne idée d'utiliser alors :
1 2 3 4 5 6 7
| my $variable = <STDIN>;
my $regex = qr/$variable/;
while( <> ) {
s/$regex/bye/g;
print;
} |
Dans ce cas la regex ne sera compilée qu'une seule fois.
Partager