This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Revert "PATCH: [perl #119499] "$!" with UTF-8 flag"
authorKarl Williamson <khw@cpan.org>
Wed, 4 Jun 2014 00:39:40 +0000 (18:39 -0600)
committerKarl Williamson <khw@cpan.org>
Thu, 5 Jun 2014 18:23:02 +0000 (12:23 -0600)
commit5320b60d881861d12d3f678c90a6eafe50077814
tree452faaa5b3c203286444ab7221dde16d04bb4ab3
parent2c6ee1a7a1ce7cff7755f9aa43a65b8278dd82a1
Revert "PATCH: [perl #119499] "$!" with UTF-8 flag"

This reverts commit b17e32ea3ba5ef7362d2a3d1a433661afb897786.

With this commit, the stringification of $! will have the UTF-8 flag set
when the text is actually non-ASCII UTF-8.  The reverted commit itself
reverted code that was to fix bugs with this discrepancy of the UTF-8
flag, but which caused backward-compatibility problems with existing
code.

Several things have happened in the interim which allows us to
experimentally resotre the previously reverted changes.  One is that
this is early in the 5.21 cycle, and we have plenty of time to see what
negative consequences this may cause.  Two is that the returned text
will only be in UTF-8 if the stringification happens within the scope of
'use locale'.  This means that the negative effects won't happen for
code, like ack, that is otherwise locale unaware.  Third, the 'locale'
pragma has been enhanced to allow the program to only have locale
awareness of LC_MESSAGES.

Code that needs to continue the 5.20 and earlier behavior can do the
stringification within the scopes of both 'use bytes' and 'use locale
":messages".  No other Perl operations will be affected by locale; only
$! and $^E stringification.  The 'bytes' pragma causes the UTF-8 flag to
not be set, just as in previous Perl releases.
lib/locale.t
mg.c
pod/perldelta.pod
pod/perlvar.pod