Returns a lowercased version of EXPR. This is the internal function
implementing the \L
escape in double-quoted strings.
If EXPR is omitted, uses $_
.
What gets returned depends on several factors:
use bytes
is in effect:
The results follow ASCII rules. Only the characters A-Z
change,
to a-z
respectively.
use locale
for LC_CTYPE
is in effect:
Respects current LC_CTYPE
locale for code points < 256; and uses Unicode
rules for the remaining code points (this last can only happen if
the UTF8 flag is also set). See perllocale.
Starting in v5.20, Perl uses full Unicode rules if the locale is
UTF-8. Otherwise, there is a deficiency in this scheme, which is that
case changes that cross the 255/256
boundary are not well-defined. For example, the lower case of LATIN CAPITAL
LETTER SHARP S (U+1E9E) in Unicode rules is U+00DF (on ASCII
platforms). But under use locale
(prior to v5.20 or not a UTF-8
locale), the lower case of U+1E9E is
itself, because 0xDF may not be LATIN SMALL LETTER SHARP S in the
current locale, and Perl has no way of knowing if that character even
exists in the locale, much less what code point it is. Perl returns
a result that is above 255 (almost always the input character unchanged,
for all instances (and there aren't many) where the 255/256 boundary
would otherwise be crossed; and starting in v5.22, it raises a
locale warning.
Unicode rules are used for the case change.
use feature 'unicode_strings'
or use locale ':not_characters'
is in effect:
Unicode rules are used for the case change.
ASCII rules are used for the case change. The lowercase of any character outside the ASCII range is the character itself.