diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-11-18 23:57:41 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-11-19 00:02:39 -0800 |
commit | 290797f7dfbf93d204db5c34eebe2c81a615284f (patch) | |
tree | 5cbd300e11e9cec701d1ce7b96397985e6587a6e | |
parent | 12d079942585f448cddf9b45ec18f8629001cc53 (diff) | |
download | perl-290797f7dfbf93d204db5c34eebe2c81a615284f.tar.gz |
Mention implicit $_ in y///r uninit warning
This brings it into conformity with y without the /r.
-rw-r--r-- | pp.c | 6 | ||||
-rw-r--r-- | sv.c | 1 | ||||
-rw-r--r-- | t/lib/warnings/9uninit | 68 |
3 files changed, 42 insertions, 33 deletions
@@ -753,9 +753,11 @@ PP(pp_trans) } TARG = sv_newmortal(); if(PL_op->op_type == OP_TRANSR) { - SV * const newsv = newSVsv(sv); + STRLEN len; + const char * const pv = SvPV(sv,len); + SV * const newsv = newSVpvn_flags(pv, len, SVs_TEMP|SvUTF8(sv)); do_trans(newsv); - mPUSHs(newsv); + PUSHs(newsv); } else PUSHi(do_trans(sv)); RETURN; @@ -14098,6 +14098,7 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, /* ops where $_ may be an implicit arg */ case OP_TRANS: + case OP_TRANSR: case OP_SUBST: case OP_MATCH: if ( !(obase->op_flags & OPf_STACKED)) { diff --git a/t/lib/warnings/9uninit b/t/lib/warnings/9uninit index 0f0f465ec1..495f570499 100644 --- a/t/lib/warnings/9uninit +++ b/t/lib/warnings/9uninit @@ -771,6 +771,7 @@ s/$m1/z/; undef $_; s//$g1/; undef $_; s/$m1/$g1/; undef $_; tr/x/y/; undef $_; +tr/x/y/r; undef $_; my $_; /y/; @@ -781,6 +782,7 @@ s/$m1/z/; undef $_; s//$g1/; undef $_; s/$m1/$g1/; undef $_; tr/x/y/; undef $_; +tr/x/y/r; undef $_; $g2 =~ /y/; $g2 =~ /$m1/; @@ -790,6 +792,7 @@ $g2 =~ s/$m1/z/; undef $g2; $g2 =~ s//$g1/; undef $g2; $g2 =~ s/$m1/$g1/; undef $g2; $g2 =~ tr/x/y/; undef $g2; # XXX can't extract var name yet +$g2 =~ tr/x/y/r; undef $g2; # XXX can't extract var name yet my $foo = "abc"; $foo =~ /$m1/; @@ -821,50 +824,53 @@ Use of uninitialized value $_ in substitution (s///) at - line 12. Use of uninitialized value $_ in substitution (s///) at - line 12. Use of uninitialized value $g1 in substitution iterator at - line 12. Use of uninitialized value $_ in transliteration (tr///) at - line 13. -Use of uninitialized value $_ in pattern match (m//) at - line 16. -Use of uninitialized value $m1 in regexp compilation at - line 17. +Use of uninitialized value $_ in transliteration (tr///) at - line 14. Use of uninitialized value $_ in pattern match (m//) at - line 17. -Use of uninitialized value $g1 in regexp compilation at - line 18. +Use of uninitialized value $m1 in regexp compilation at - line 18. Use of uninitialized value $_ in pattern match (m//) at - line 18. -Use of uninitialized value $_ in substitution (s///) at - line 19. -Use of uninitialized value $m1 in regexp compilation at - line 20. -Use of uninitialized value $_ in substitution (s///) at - line 20. +Use of uninitialized value $g1 in regexp compilation at - line 19. +Use of uninitialized value $_ in pattern match (m//) at - line 19. Use of uninitialized value $_ in substitution (s///) at - line 20. +Use of uninitialized value $m1 in regexp compilation at - line 21. Use of uninitialized value $_ in substitution (s///) at - line 21. -Use of uninitialized value $g1 in substitution (s///) at - line 21. Use of uninitialized value $_ in substitution (s///) at - line 21. -Use of uninitialized value $g1 in substitution (s///) at - line 21. -Use of uninitialized value $m1 in regexp compilation at - line 22. Use of uninitialized value $_ in substitution (s///) at - line 22. +Use of uninitialized value $g1 in substitution (s///) at - line 22. Use of uninitialized value $_ in substitution (s///) at - line 22. -Use of uninitialized value $g1 in substitution iterator at - line 22. -Use of uninitialized value $_ in transliteration (tr///) at - line 23. -Use of uninitialized value $g2 in pattern match (m//) at - line 25. -Use of uninitialized value $m1 in regexp compilation at - line 26. -Use of uninitialized value $g2 in pattern match (m//) at - line 26. -Use of uninitialized value $g1 in regexp compilation at - line 27. +Use of uninitialized value $g1 in substitution (s///) at - line 22. +Use of uninitialized value $m1 in regexp compilation at - line 23. +Use of uninitialized value $_ in substitution (s///) at - line 23. +Use of uninitialized value $_ in substitution (s///) at - line 23. +Use of uninitialized value $g1 in substitution iterator at - line 23. +Use of uninitialized value $_ in transliteration (tr///) at - line 24. +Use of uninitialized value $_ in transliteration (tr///) at - line 25. Use of uninitialized value $g2 in pattern match (m//) at - line 27. -Use of uninitialized value $g2 in substitution (s///) at - line 28. -Use of uninitialized value $m1 in regexp compilation at - line 29. -Use of uninitialized value $g2 in substitution (s///) at - line 29. -Use of uninitialized value $g2 in substitution (s///) at - line 29. -Use of uninitialized value $g2 in substitution (s///) at - line 30. -Use of uninitialized value $g1 in substitution (s///) at - line 30. +Use of uninitialized value $m1 in regexp compilation at - line 28. +Use of uninitialized value $g2 in pattern match (m//) at - line 28. +Use of uninitialized value $g1 in regexp compilation at - line 29. +Use of uninitialized value $g2 in pattern match (m//) at - line 29. Use of uninitialized value $g2 in substitution (s///) at - line 30. -Use of uninitialized value $g1 in substitution (s///) at - line 30. Use of uninitialized value $m1 in regexp compilation at - line 31. Use of uninitialized value $g2 in substitution (s///) at - line 31. Use of uninitialized value $g2 in substitution (s///) at - line 31. -Use of uninitialized value $g1 in substitution iterator at - line 31. -Use of uninitialized value in transliteration (tr///) at - line 32. -Use of uninitialized value $m1 in regexp compilation at - line 35. -Use of uninitialized value $g1 in regexp compilation at - line 36. +Use of uninitialized value $g2 in substitution (s///) at - line 32. +Use of uninitialized value $g1 in substitution (s///) at - line 32. +Use of uninitialized value $g2 in substitution (s///) at - line 32. +Use of uninitialized value $g1 in substitution (s///) at - line 32. +Use of uninitialized value $m1 in regexp compilation at - line 33. +Use of uninitialized value $g2 in substitution (s///) at - line 33. +Use of uninitialized value $g2 in substitution (s///) at - line 33. +Use of uninitialized value $g1 in substitution iterator at - line 33. +Use of uninitialized value in transliteration (tr///) at - line 34. +Use of uninitialized value in transliteration (tr///) at - line 35. Use of uninitialized value $m1 in regexp compilation at - line 38. -Use of uninitialized value $g1 in substitution (s///) at - line 39. -Use of uninitialized value $m1 in regexp compilation at - line 40. -Use of uninitialized value $g1 in substitution iterator at - line 40. -Use of uninitialized value $m1 in substitution iterator at - line 41. -Use of uninitialized value in substitution iterator at - line 44. +Use of uninitialized value $g1 in regexp compilation at - line 39. +Use of uninitialized value $m1 in regexp compilation at - line 41. +Use of uninitialized value $g1 in substitution (s///) at - line 42. +Use of uninitialized value $m1 in regexp compilation at - line 43. +Use of uninitialized value $g1 in substitution iterator at - line 43. +Use of uninitialized value $m1 in substitution iterator at - line 44. +Use of uninitialized value in substitution iterator at - line 47. ######## use warnings 'uninitialized'; my ($m1); |