Make strict refs report $1 the same way as "$1"
authorFather Chrysostomos <sprout@cpan.org>
Sat, 26 May 2012 05:44:39 +0000 (22:44 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Thu, 7 Jun 2012 15:18:53 +0000 (08:18 -0700)
commitbf3d870f8b8accd379ab520c1ff1daa10317d27d
tree5146803b0bf1ed8f28a35e8c6728b09f1ab2710a
parentf90b723246c15bceccd726b73c412184c27eca7d
Make strict refs report $1 the same way as "$1"

A magical variable is never SvPOK, but only SvPOKp.  The code that
determined whether to put an ellipsis mark after a truncated symbol
name was only checking SvPOK, resulting in this discrepancy:

$ perl5.15.9 -e 'use strict; *{"a"x40}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"...) as a symbol ref while "strict refs" in use at -e line 1.
$ perl5.15.9 -e 'use strict; ("a"x40)=~/(.*)/; *{$1}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as a symbol ref while "strict refs" in use at -e line 1.
$ perl5.15.9 -e 'use strict; ${"a"x40}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"...) as a SCALAR ref while "strict refs" in use at -e line 1.
$ perl5.15.9 -e 'use strict; ("a"x40)=~/(.*)/; ${$1}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as a SCALAR ref while "strict refs" in use at -e line 1.

SvPOK variables are also SvPOKp, so checking just the latter suffices.
pp.c
t/lib/strict/refs