C<_> is now forced to be a bareword after a filetest operator. This solves
a number of misparsing issues when a global C<_> subroutine is defined.
-=head2 C<defined %foo::bar::>
-
-This used to report whether the C<foo::bar> package was created. Now it's
-always true, as a side-effect of a change to shrink the internal size of
-hash structures. Note that using C<defined> on hashes was deprecated
-anyway. To achieve the same result, you can use the following
-backwards-compatible idiom:
-
- defined *foo::{HASH}->{'bar::'}
-
=head1 Core Enhancements
=head1 Modules and Pragmata
=head1 Selected Bug Fixes
+=head2 C<defined $$x>
+
+C<use strict "refs"> was ignoring taking a hard reference in an argument
+to defined(), as in :
+
+ use strict "refs";
+ my $x = "foo";
+ if (defined $$x) {...}
+
+This now correctly produces the run-time error C<Can't use string as a
+SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and
+C<defined %$foo> are still allowed. Those constructs are discouraged
+anyway.)
+
=head1 New or Changed Diagnostics
=head1 Changed Internals