Croak if gv_init doesn't know how to create a typeglob from that type
[p5sagit/p5-mst-13.2.git] / pod / perl593delta.pod
index 1c0a8fb..b6f7b40 100644 (file)
@@ -15,16 +15,6 @@ L<perl592delta> for the differences between 5.8.0 and 5.9.2.
 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 a symbolic reference
-instead (and this is backwards-compatible):
-
-    defined %{"foo::bar::"}
-
 =head1 Core Enhancements
 
 =head1 Modules and Pragmata
@@ -39,6 +29,20 @@ instead (and this is backwards-compatible):
 
 =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