lcfirst#
מחזיר עותק של מחרוזת כאשר התו הראשון שלה הופך לאות קטנה.
lcfirst נוגע רק בתו הראשון; שאר המחרוזת מועתקת ככתבה וכלשונה. הקלט אינו משתנה - lcfirst מחזיר מחרוזת חדשה. זוהי הפונקציה הפנימית המממשת את ה־escape \l במחרוזות בגרשיים כפולים, כך ש־"\l$name" ו־lcfirst($name) מפיקים את אותה תוצאה.
אם EXPR מושמט, lcfirst פועל על $_.
תקציר#
lcfirst EXPR
lcfirst
מה מקבלים בחזרה#
מחרוזת חדשה השווה ל־EXPR כאשר התו הראשון שלה הוחלף בצורת אות קטנה שכללי קיפול־האותיות של אותו תו מפיקים. שאר המחרוזת ללא שינוי. אם EXPR היא המחרוזת הריקה, המחרוזת הריקה מוחזרת. אם EXPR היא undef, התוצאה היא המחרוזת הריקה ואזהרת uninitialized נפלטת תחת use warnings.
lcfirst אף פעם לא משנה את הארגומנט שלו. כדי להפוך את התו הראשון לאות קטנה במקום, השמו את התוצאה בחזרה:
$name = lcfirst $name;
לווריאנט של כל־התווים, ראו lc.
מצב גלובלי שהוא נוגע בו#
$_- נקרא כאשרEXPRמושמט.locale של
LC_CTYPE- נלקח בחשבון כאשרuse localeבתוקף (ראו פרגמות וכללי רישיות להלן).
פרגמות וכללי רישיות#
lcfirst מתנהג באותו אופן תחת פרגמות שונות כמו lc. מערך הכללים הפעיל עבור התו הראשון תלוי באילו פרגמות בתחום באתר הקריאה:
use bytes- כללי ASCII בלבד. רק הבתיםA-Zמקופלים ל־a-z; כל בית אחר מוחזר ללא שינוי.use locale(עבורLC_CTYPE) - ה־locale הנוכחי מחליט את הקיפול עבור נקודות קוד מתחת ל־256. נקודות קוד 256 ומעלה מתקפלות לפי כללי Unicode כאשר במחרוזת מוגדר דגל UTF-8. locale של UTF-8 מפעיל כללי Unicode מלאים החל מ־Perl 5.20 ואילך.מחרוזת עם דגל UTF-8 - חלים כללי קיפול־אותיות של Unicode.
use feature 'unicode_strings'oruse locale ':not_characters'Unicode rules apply regardless of the UTF-8 flag.
אחרת - כללי ASCII. תווים מחוץ ל־ASCII מוחזרים ללא שינוי.
המשמעות היא שאותו lcfirst("É...") יכול להחזיר "é..." תחת use utf8 או use feature 'unicode_strings', ו־"É..." (ללא שינוי) תחת ברירות מחדל של ASCII־טהור. כאשר ניידות בין פרגמות חשובה, ציינו את מערך הכללים מפורשות:
use feature 'unicode_strings';
my $s = lcfirst $input; # Unicode rules regardless of UTF-8 flag
דוגמאות#
קריאה בסיסית, הפיכת האות הראשונה של מילה לאות קטנה:
my $s = lcfirst "Hello, World"; # "hello, World"
נורמליזציה של title-case לרשימת שמות, כאשר הקורא רוצה שהאות הראשונה תהפוך לאות קטנה עבור slug של URL:
my @slugs = map { lcfirst } @CamelCaseNames;
צורת ברירת־מחדל של הארגומנט קוראת מ־$_:
for ("Apple", "Banana", "Cherry") {
print lcfirst, "\n"; # "apple", "banana", "cherry"
}
רק התו הראשון משתנה - אותיות גדולות מאוחרות יותר נשמרות. הדבר חשוב עבור מזהי camelCase הנגזרים מ־PascalCase:
my $method = lcfirst "GetUserName"; # "getUserName"
יש לבקש כללי Unicode מפורשות, באמצעות מחרוזת קלט עם דגל UTF-8 או באמצעות התכונה unicode_strings:
use feature 'unicode_strings';
my $s = lcfirst "Éclair"; # "éclair"
my $s = lcfirst "Éclair"; # without unicode_strings and no
# UTF-8 flag: "Éclair" unchanged
ה־escape \l במחרוזת בגרשיים כפולים הוא בדיוק lcfirst על התו הבא:
my $name = "Perl";
print "\l$name\n"; # "perl\n"
מקרי קצה#
מחרוזת ריקה:
lcfirst("")מחזיר"". ללא אזהרה.קלט
undef:lcfirst(undef)מחזיר"". פולט אזהרתuninitializedתחתuse warnings.התו הראשון כבר אות קטנה: מוחזר ללא שינוי; אין מקרה מיוחד, אין קיצור דרך שהמשתמש צריך לדעת עליו.
לתו הראשון אין מיפוי לאות קטנה (ספרה, סימן פיסוק, סמל, רוב CJK): מוחזר ללא שינוי.
קיפולי אותיות מרובי־נקודות־קוד: חלק מתווי Unicode הופכים לאות קטנה ביותר מנקודת קוד אחת (למשל זוגות I מנוקדים/בלתי־מנוקדים בטורקית בקיפולים מותאמי־locale).
lcfirstעוקב אחר מיפוי האות הקטנה הפשוט של Unicode, שהוא תמיד נקודת־קוד־בודדת - הוא אינו מבצע קיפול אותיות מלא. השתמשו ב־lcבשילוב עם נורמליזציה, או ב־Unicode::CaseFoldמפורש, כאשר סמנטיקת קיפול מלא חשובה.הפתעות locale סביב 255/256: תחת
use localeעם locale שאינו UTF-8, תו ראשון שהאות הקטנה שלו תחצה את הגבול 255/256 מוחזר ללא שינוי, ומ־Perl 5.22 ואילך נפלטת אזהרתlocale.לא מודע־רשימה:
lcfirstהוא אופרטור סקלרי.lcfirst @listלוקח אתscalar(@list)- מונה האלמנטים - והופך את התו הראשון שלו לאות קטנה, כמעט אף פעם לא מה שהקורא התכוון אליו. השתמשו ב־map { lcfirst } @listעבור הפיכה לאות קטנה פר־אלמנט.
הבדלים מ־upstream#
תואם מלא ל־upstream Perl 5.42.