返回 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 警告。
对于大小写更改,使用 Unicode 规则。
use feature 'unicode_strings'
或 use locale ':not_characters'
生效对于大小写更改,使用 Unicode 规则。
ASCII 规则用于大小写转换。ASCII 范围之外的任何字符的小写都是字符本身。
注意:这是实现双引号字符串中 \L
转义的内部函数。
my $str = "Perl is \LGREAT\E"; # "Perl is great"