and you may want to disable them in code that is also run on perls that do not
recognize these warning categories, consider using the C<if> pragma like this:
- no if $] >= 5.018, 'warnings', "experimental::feature_name";
+ no if $] >= 5.018, warnings => "experimental::feature_name";
Existing experimental features may begin emitting these warnings, too. Please
consult L<perlexperiment> for information on which features are considered
Several more built-in functions have been added as subroutines to the
CORE:: namespace - namely, those non-overridable keywords that can be
implemented without custom parsers: C<defined>, C<delete>, C<exists>,
-C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, and C<undef>.
+C<glob>, C<pos>, C<prototype>, C<scalar>, C<split>, C<study>, and C<undef>.
As some of these have prototypes, C<prototype('CORE::...')> has been
changed to not make a distinction between overridable and non-overridable
Warnings will now be issued when the parser sees C<~~>, C<given>, or C<when>.
To disable these warnings, you can add this line to the appropriate scope:
- no if $] >= 5.018, "experimental::smartmatch";
+ no if $] >= 5.018, warnings => "experimental::smartmatch";
Consider, though, replacing the use of these features, as they may change
behavior again before becoming stable.
=head2 Defined values stored in environment are forced to byte strings
-A value stored in an environment variable has always been stringified. In this
-release, it is converted to be only a byte string. First, it is forced to be
-only a string. Then if the string is utf8 and the equivalent of
-C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
-C<utf8::encode()> is used, and a warning is issued about wide characters
-(L</Diagnostics>).
+A value stored in an environment variable has always been stringified when
+inherited by child processes.
+
+In this release, when assigning to C<%ENV>, values are immediately stringified,
+and converted to be only a byte string.
+
+First, it is forced to be a only a string. Then if the string is utf8 and the
+equivalent of C<utf8::downgrade()> works, that result is used; otherwise, the
+equivalent of C<utf8::encode()> is used, and a warning is issued about wide
+characters (L</Diagnostics>).
=head2 C<require> dies for unreadable files
=item *
Using any of these three pragmata would cause C<hex> and C<oct> anywhere
-else in the program to evalute their arguments in list context and prevent
+else in the program to evaluate their arguments in list context and prevent
them from inferring $_ when called without arguments.
=item *
L<PerlIO::scalar> has been upgraded to 0.16.
-The buffer scalar supplied may now only contain code pounts 0xFF or
+The buffer scalar supplied may now only contain code points 0xFF or
lower. [perl #109828]
=item *
=item *
-C<RXf_SPLIT> and C<RXf_SKIPWHITE> are no longer used. They are now
-#defined as 0.
-
-=item *
-
The new C<RXf_MODIFIES_VARS> flag can be set by custom regular expression
engines to indicate that the execution of the regular expression may cause
variables to be modified. This lets C<s///> know to skip certain
C<*_{ARRAY}> returned from a subroutine no longer spontaneously
becomes empty.
+=item *
+
+When using C<say> to print to a tied filehandle, the value of C<$\> is
+correctly localized, even if it was previously undef. [perl #119927]
+
=back
=head1 Known Problems