=over =item lc EXPR X<lc> X<lowercase> =item lc Returns a lowercased version of EXPR. This is the internal function implementing the C<\L> escape in double-quoted strings. If EXPR is omitted, uses L<C<$_>|perlvar/$_>. What gets returned depends on several factors: =over =item If C<use bytes> is in effect: The results follow ASCII rules. Only the characters C<A-Z> change, to C<a-z> respectively. =item Otherwise, if C<use locale> for C<LC_CTYPE> is in effect: Respects current C<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 L<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 C<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 L<locale|perldiag/Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".> warning. =item Otherwise, If EXPR has the UTF8 flag set: Unicode rules are used for the case change. =item Otherwise, if C<use feature 'unicode_strings'> or C<use locale ':not_characters'> is in effect: Unicode rules are used for the case change. =item Otherwise: ASCII rules are used for the case change. The lowercase of any character outside the ASCII range is the character itself. =back =back