diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2007-03-07 16:32:48 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2007-03-07 16:32:48 +0000 |
commit | e879d94fd490498d2ab8c584f625025bbfa1d542 (patch) | |
tree | 655e7569d95fc63957f6dcbbc2c5c3466be8a886 | |
parent | 2575c402a8f9be55f848bdfb219afbf912c50ac1 (diff) | |
download | perl-e879d94fd490498d2ab8c584f625025bbfa1d542.tar.gz |
Use another method to avoid the "possible interpolation" warning
for @- and @+ : do this directly from the lexer (patch by Yves
Orton.) This way, @- and @+ aren't preloaded anymore.
Avoid to require re::Tie::Hash::NamedCapture when the *- or *+
globs are created, this was breaking the build due to miniperl's
inability to load it.
p4raw-id: //depot/perl@30496
-rw-r--r-- | gv.c | 5 | ||||
-rw-r--r-- | perl.c | 5 | ||||
-rw-r--r-- | toke.c | 6 |
3 files changed, 9 insertions, 7 deletions
@@ -1225,7 +1225,10 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags, SvREADONLY_on(tie); SvREADONLY_on(av); - require_tie_mod(gv, name, stashname, "FETCH", 0); + if (sv_type == SVt_PVHV) + require_tie_mod(gv, name, stashname, "FETCH", 0); + else + SvREFCNT_dec(stashname); break; } @@ -4721,11 +4721,6 @@ S_init_postdump_symbols(pTHX_ register int argc, register char **argv, register if (PL_minus_a) { (void) get_av("main::F", TRUE | GV_ADDMULTI); } - /* touch @- and @+ arrays to prevent spurious warnings 20020415 MJD */ - /* (but don't load the glob, since that requires loading - * re::Tie::Hash::NamedCapture, and miniperl can't do that */ - (void) hv_fetch(PL_defstash, "-", 1, GV_ADDMULTI); - (void) hv_fetch(PL_defstash, "+", 1, GV_ADDMULTI); } STATIC void @@ -6987,7 +6987,11 @@ S_pending_ident(pTHX) if (pit == '@' && PL_lex_state != LEX_NORMAL && !PL_lex_brackets) { GV *gv = gv_fetchpv(PL_tokenbuf+1, 0, SVt_PVAV); if ((!gv || ((PL_tokenbuf[0] == '@') ? !GvAV(gv) : !GvHV(gv))) - && ckWARN(WARN_AMBIGUOUS)) + && ckWARN(WARN_AMBIGUOUS) + /* DO NOT warn for @- and @+ */ + && !( PL_tokenbuf[2] == '\0' && + ( PL_tokenbuf[1] == '-' || PL_tokenbuf[1] == '+' )) + ) { /* Downgraded from fatal to warning 20000522 mjd */ Perl_warner(aTHX_ packWARN(WARN_AMBIGUOUS), |