lc EXPR
lc

返回 EXPR 的小写版本。如果省略 EXPR,则使用 $_

my $str = lc("Perl is GREAT"); # "perl is great"

返回的内容取决于几个因素

如果 use bytes 生效

结果遵循 ASCII 规则。只有字符 A-Z 更改为 a-z

否则,如果 use locale 对于 LC_CTYPE 生效

对于代码点 < 256,尊重当前 LC_CTYPE 区域设置;对于其余代码点,使用 Unicode 规则(只有在 UTF8 标志也设置的情况下,才会发生这种情况)。请参阅 perllocale

从 v5.20 开始,如果区域设置为 UTF-8,Perl 将使用完整的 Unicode 规则。否则,此方案存在缺陷,即跨越 255/256 边界的案例更改未定义。例如,Unicode 规则中 LATIN CAPITAL LETTER SHARP S (U+1E9E) 的小写形式在 ASCII 平台上为 U+00DF。但在 use locale(v5.20 之前或不是 UTF-8 区域设置)下,U+1E9E 的小写形式本身,因为 0xDF 在当前区域设置中可能不是 LATIN SMALL LETTER SHARP S,而且 Perl 无法知道该字符在区域设置中是否存在,更不用说它是哪个代码点了。对于所有实例(不多),如果 255/256 边界被跨越,Perl 返回大于 255 的结果(几乎总是输入字符保持不变);从 v5.22 开始,它会引发 locale 警告。

否则,如果 EXPR 设置了 UTF8 标志

对于大小写更改,使用 Unicode 规则。

否则,如果 use feature 'unicode_strings'use locale ':not_characters' 生效

对于大小写更改,使用 Unicode 规则。

否则

ASCII 规则用于大小写转换。ASCII 范围之外的任何字符的小写都是字符本身。

注意:这是实现双引号字符串中 \L 转义的内部函数。

my $str = "Perl is \LGREAT\E"; # "Perl is great"