Thanks. This is a correct answer. I consider that this was then a bug, but 
not in ActivePerl, rather in my perception that you have corrected by your 
mail.

Thanks again
Peter

-----Original Message-----
From:   Jan Dubois [SMTP:[EMAIL PROTECTED]]
Sent:   2002. januar 10. 6:43
To:     Arms, Mike
Cc:     'Peter Verhas'; [EMAIL PROTECTED]
Subject:        Re: Bug in ActivePerl?

On Mon, 7 Jan 2002 10:54:41 -0700, "Arms, Mike" <[EMAIL PROTECTED]> wrote:

>I confirm the problem as Peter states it. I tested under
>three environments. Results were:
>
>Environment                       Output
>-----------                       ------
>Win2K, ActivePerl 5.6.1 (628)      q1 p1 q p
>Cygwin, Perl 5.6.1                 q1 p1 q1 p
>Solaris 2.7, Perl 5.6.1            q1 p1 q1 p
>
>Jan, is this a known ActivePerl bug with regards to the
>'o' regex modifier?

This "behavior" is known: it is a side effect of using the USE_ITHREADS
options when compiling (Active)Perl.  For threadsafty reasons, regular
expressions using variable interpolations are *always* recompiled.

Note that /o is only an optimization switch; you are not supposed to alter
any variables afterwards.  From `perldoc perlop`:

|                               However, mentioning "/o" constitutes a
|        promise that you won't change the variables in the pattern.

If you break that promise, you are subjecting your code to undefined
behavior.

Having said all this, the ITHREADS code in Perl 5.7.x has been changed so
that regex interpolation is threadsafe and /o will work again when
ActivePerl is based on Perl 5.8.  Changing it right now is not possible
for binary compatibility reasons.

-Jan

_______________________________________________
ActivePerl mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/activeperl

Reply via email to