lc EXPR
lc

傳回 EXPR 的小寫版本。如果省略 EXPR,則使用 $_

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

傳回的結果取決於多個因素

如果 use bytes 生效

結果遵循 ASCII 規則。只有字元 A-Z 會變更,分別變更為 a-z

否則,如果 use locale for LC_CTYPE 生效

尊重目前的 LC_CTYPE 區域設定,適用於小於 256 的碼點;並對其餘碼點使用 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"