diff options
author | Father Chrysostomos <sprout@cpan.org> | 2012-11-25 12:57:04 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-11-27 07:05:02 -0800 |
commit | 1a904fc88069e249a4bd0ef196a3f1a7f549e0fe (patch) | |
tree | de28df537caeee6b88185d7beb1305d5b8b55dfb /intrpvar.h | |
parent | 07d01d6ec25527bf0236de2205ea412d40353058 (diff) | |
download | perl-1a904fc88069e249a4bd0ef196a3f1a7f549e0fe.tar.gz |
Disable PL_sawampersand
PL_sawampersand actually causes bugs (e.g., perl #4289), because the
behaviour changes. eval '$&' after a match will produce different
results depending on whether $& was seen before the match.
Using copy-on-write for the pre-match copy (preceding patches do that)
alleviates the slowdown caused by mentioning $&. The copy doesn’t
happen unless the string is modified after the match. It’s now a
post- match copy. So we no longer need to do things differently
depending on whether $& has been seen.
PL_sawampersand is now #defined to be equal to what it would be if
every program began with $',$&,$`.
I left the PL_sawampersand code in place, in case this commit proves
immature. Running Configure with -Accflags=PERL_SAWAMPERSAND will
reënable the PL_sawampersand mechanism.
Diffstat (limited to 'intrpvar.h')
-rw-r--r-- | intrpvar.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/intrpvar.h b/intrpvar.h index 5a6a4f1827..52b45ba2b9 100644 --- a/intrpvar.h +++ b/intrpvar.h @@ -291,7 +291,9 @@ The C variable which corresponds to Perl's $^W warning variable. */ PERLVAR(I, dowarn, U8) +#ifdef PERL_SAWAMPERSAND PERLVAR(I, sawampersand, U8) /* must save all match strings */ +#endif PERLVAR(I, unsafe, bool) PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */ |