Document that the regexp engine is not currently reentrant
Dominic Dunlop [Sun, 2 Apr 2006 21:13:59 +0000 (23:13 +0200)]
Subject: Re: [perl #33936] segment fault when using split() in regexp with (??{...})
Message-Id: <AD104FE7-2BD6-49B6-A845-46458179A4B1@computer.org>

p4raw-id: //depot/perl@27697

pod/perlre.pod

index 32a7e6f..04c92d5 100644 (file)
@@ -694,6 +694,10 @@ so you should only do so if you are also using taint checking.
 Better yet, use the carefully constrained evaluation within a Safe
 compartment.  See L<perlsec> for details about both these mechanisms.
 
+Because perl's regex engine is not currently re-entrant, interpolated 
+code may not invoke the regex engine either directly with C<m//> or C<s///>),
+or indirectly with functions such as C<split>.
+
 =item C<(??{ code })>
 X<(??{})>
 X<regex, postponed> X<regexp, postponed> X<regular expression, postponed>
@@ -724,6 +728,10 @@ The following pattern matches a parenthesized group:
             \)
          }x;
 
+Because perl's regex engine is not currently re-entrant, delayed 
+code may not invoke the regex engine either directly with C<m//> or C<s///>),
+or indirectly with functions such as C<split>.
+
 =item C<< (?>pattern) >>
 X<backtrack> X<backtracking>