in reply to Re^3: Problem with pre-compiled regex
in thread Problem with pre-compiled regex

I also think that Perl has an internal cache that avoids recompiling the same regex all over again.

The ops that compile regex patterns (qr//, m// and s///) remember the last pattern they compiled.

_ _ _ | | | | | >perl -Mre=debug -e"for (qw( a a a a b b b a )) { qr/$_/ }" 2>&1 | fin +d "Compiling" Compiling REx "a" Compiling REx "b" Compiling REx "a"

So if you compile the same pattern many times in a row, you'll get savings.

It's useful for code that looks like

for my $pat (...) { for my $string (...) { ... $string =~ /$pat/ ... } }

But not for code that looks like

for my $string (...) { for my $pat (...) { ... $string =~ /$pat/ ... } }