Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# lc

Perl 5 version 16.0 documentation
Go to top
Show recent pages
Recently read

# lc

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- lc EXPR

- lc

  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:

  - If `use bytes` is in effect:
    - On EBCDIC platforms

      The results are what the C language system call `tolower()` returns.

    - On ASCII platforms

      The results follow ASCII semantics. Only characters `A-Z` change, to `a-z` respectively.

  - Otherwise, if `use locale` (but not `use locale ':not_characters'` ) is in effect:

    Respects current LC_CTYPE locale for code points < 256; and uses Unicode semantics for the remaining code points (this last can only happen if the UTF8 flag is also set). See perllocale.

    A deficiency in this 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 semantics is U+00DF (on ASCII platforms). But under `use 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 the input character unchanged, for all instances (and there aren't many) where the 255/256 boundary would otherwise be crossed.

  - Otherwise, If EXPR has the UTF8 flag set:

    Unicode semantics are used for the case change.

  - Otherwise, if `use feature 'unicode_strings'` or `use locale ':not_characters'` ) is in effect:

    Unicode semantics are used for the case change.

  - Otherwise:
    - On EBCDIC platforms

      The results are what the C language system call `tolower()` returns.

    - On ASCII platforms

      ASCII semantics are used for the case change. The lowercase of any character outside the ASCII range is the character itself.