lc#
מחזיר עותק של מחרוזת באותיות קטנות.
lc מקבל מחרוזת, ממיר כל תו בעל גודל־אותיות לצורת האות הקטנה שלו, ומחזיר את התוצאה. המקור לעולם אינו משונה. אם הארגומנט מושמט, lc פועל על $_. הקבוצה המדויקת של תווים המשתנים תלויה בקידוד המחרוזת ובפרגמות שבתחום באתר הקריאה - ASCII בלבד כברירת מחדל, Unicode מלא תחת use feature 'unicode_strings' או כאשר הקלט הוא כבר מחרוזת תווים עם דגל UTF-8.
תקציר#
lc EXPR
lc
מה מקבלים בחזרה#
מחרוזת חדשה. ערך ההחזרה הוא תמיד סקלר רענן - שינוי שלו אינו משפיע על הארגומנט, ושינוי הארגומנט לאחר מכן אינו משפיע על המחרוזת המוחזרת. האורך בתווים נשמר: lc לעולם אינו מוסיף או מסיר תווים, גם במקרי Unicode הנדירים שבהם צורות אותיות גדולות וקטנות בעלות אורכים שונים בכיוונים אחרים (ראו fc לקיפול אותיות, היכול לשנות אורך).
my $str = lc("Perl is GREAT"); # "perl is great"
מצב גלובלי שהוא נוגע בו#
קורא את
$_כאשר נקרא ללא ארגומנט.מתחשב ב־
use localeעבורLC_CTYPE- עם locale פעיל טבלת אותיות־קטנות של ה־locale הנוכחי חלה על נקודות קוד מתחת ל־256.מתחשב ב־
use bytes- תחתuse bytesרקA-Zמשתנים, ל־a-z.מתחשב ב־
use feature 'unicode_strings'- מאלץ כללי Unicode ללא קשר לדגל UTF-8 על הקלט.
אילו כללי גודל־אותיות חלים#
Perl בוחרת באחת מארבע מערכות־כללים, בסדר עדיפויות. הראשונה שתנאיה מתקיים מנצחת:
use bytesפעיל - כללי ASCII. רקA-Zממופים ל־a-z; כל בית אחר נשאר ללא שינוי, כולל בתים בטווח 128-255 שהיו אחרת אותיות Latin-1.use localeעבורLC_CTYPEפעיל - טבלאות ה־locale הנוכחי חלות על נקודות קוד מתחת ל־256; נקודות קוד 256 ומעלה (נגישות רק כאשר המחרוזת כבר נושאת את דגל UTF-8) משתמשות בכללי Unicode. מ־Perl 5.20 ואילך, locale של UTF-8 משתמש בכללי Unicode מלאים לכל אורכו.לארגומנט יש דגל UTF-8 מוגדר - כללי Unicode חלים על כל תו.
use feature 'unicode_strings'אוuse locale ':not_characters'פעיל - כללי Unicode חלים על כל תו, ללא קשר לדגל UTF-8.אחרת - כללי ASCII. תווים מחוץ ל־
A-Zמוחזרים ללא שינוי, כולל אותיות גדולות של Latin-1 כמוÀ-Þ.
התוצאה: כדי לקבל התנהגות Unicode צפויה על כל מחרוזת ללא קשר לאופן בנייתה, יש להפעיל use feature 'unicode_strings' (או use v5.12 ומעלה, המפעילה זאת עבורכם).
דוגמאות#
המרה לאותיות קטנות ב־ASCII בסיסית:
my $s = lc("Hello, World!"); # "hello, world!"
ברירת מחדל ל־$_:
for ("FOO", "Bar", "BAZ") {
print lc, "\n"; # foo / bar / baz
}
תווי Unicode עוברים לאותיות קטנות רק כאשר הכללים מתירים זאת:
use feature 'unicode_strings';
my $s = lc("ÄÖÜ"); # "äöü"
ללא unicode_strings וללא דגל UTF-8 על הקלט, תווים שאינם ASCII עוברים ללא שינוי:
my $bytes = "\xC4\xD6\xDC"; # Ä Ö Ü as Latin-1 bytes
my $lower = lc $bytes; # unchanged: "\xC4\xD6\xDC"
lc הוא מה שתומך ב־escape \L...\E בתוך מחרוזות במרכאות כפולות:
my $str = "Perl is \LGREAT\E"; # "Perl is great"
השוואה ללא רגישות לאותיות גדולות וקטנות על־ידי המרת שני הצדדים לאותיות קטנות:
sub ieq { lc($_[0]) eq lc($_[1]) }
ieq("Perl", "PERL"); # true
להשוואה נכונה חסרת־רישיות לרוחב Unicode, מומלץ להעדיף את fc (פונקציית קיפול ה־Unicode) על־פני lc - ראו ראו גם.
מקרי קצה#
ארגומנט
undefמעלה אזהרתuninitializedתחתuse warningsומחזיר את המחרוזת הריקה.מחרוזת ריקה מחזירה את המחרוזת הריקה.
מספרים מומרים תחילה למחרוזת:
lc(42)מחזיר"42".LATIN CAPITAL LETTER SHARP S(U+1E9E) מומר לאות קטנה U+00DF (ß) תחת כללי Unicode, אך רק אם התוצאה ניתנת לייצוג בלי לחצות את גבול 255/256 באופן שמערכת־הכללים הנוכחית מקבלת. תחתuse localeב־locale שאינו UTF-8, Perl משאירה את התו ללא שינוי במקום לנחש - ומ־Perl 5.22 ואילך זה מעלה אזהרת locale.Locale ודגל UTF-8 מגיבים זה לזה: תחת
use localeב־locale שאינו UTF-8, תווים מתחת ל־256 עוקבים אחר ה־locale בעוד תווים 256 ומעלה עוקבים אחר Unicode. למחרוזת המכילה את שני הטווחים יוחלו שתי טבלאות גודל־אותיות שונות.משתנים קשורים מקבלים
FETCHיחיד.lcאינו משנה את הערך הקשור; הוא מחזיר סקלר רגיל (לא־קשור).lcהוא אופרטור אונרי בעל שם, לא אופרטור רשימה.lc $a, $bמתפרסר כ־(lc $a), $b- רק$aמומר לאותיות קטנות, ואופרטור הפסיק משליך את התוצאה. יש להשתמש בסוגריים או ב־mapכאשר רוצים להמיר מספר מחרוזות לאותיות קטנות:my @lower = map { lc } @words;
הבדלים מ־upstream#
תואם מלא ל־upstream Perl 5.42.
ראו גם#
uc- המקבילה להמרה לאותיות גדולות, עם אותם כללי פרגמה ו־localelcfirst- להמיר רק את התו הראשון לאות קטנה; שימושי לביטול אות־גדולה במשפטים או במזהיםfc- casefold של Unicode, הבחירה הנכונה להשוואה חסרת־רישיות כאשר הקלט עשוי להכיל תווים שאינם ASCII$_- נושא ברירת המחדל ש־lcקורא כאשר נקרא ללא ארגומנטuse locale- שולט האם טבלאות locale או כללי ASCII/Unicode חלים על תווים מתחת ל־256use feature 'unicode_strings'- מאלץ גודל־אותיות Unicode מלא ללא קשר לדגל UTF-8 על הקלט