chop#
מסיר את התו האחרון ממחרוזת ומחזיר אותו.
chop מקצר את הארגומנט שלו במקום בדיוק בתו אחד ומחזיר את התו שהוסר. אינו סורק את המחרוזת ואינו מעתיק אותה - הוא פשוט מזיז את הסוף. אם VARIABLE מושמט, chop פועל על $_. אם VARIABLE הוא האש, chop קוטם כל ערך של ההאש (לא את המפתחות) ומאפס את איטרטור ה־each של ההאש כתופעת לוואי. כל lvalue הוא יעד תקף, כולל ביטוי השמה.
תקציר#
chop VARIABLE
chop( LIST )
chop
מה מקבלים בחזרה#
התו שהוסר, כמחרוזת. אם היעד היה ריק או לא־מוגדר, המחרוזת הריקה מוחזרת והיעד נשאר ללא שינוי. כאשר chop מוחל על רשימה, כל אלמנט נקטם אך מוחזר רק התו שהוסר מהאלמנט האחרון.
my $last = chop $line; # one character, or "" if $line was empty
מצב גלובלי שהוא נוגע בו#
קורא את $_ כאשר הוא נקרא ללא ארגומנט. לא נבדקים משתנים מיוחדים אחרים - בפרט, chop אינו מושפע מ־$/ (מפריד רשומת הקלט), שזה עניינו של chomp.
דוגמאות#
קטימת סקלר:
my $s = "hello";
my $c = chop $s; # $s is now "hell", $c is "o"
קטימת $_ כאשר לא ניתן ארגומנט - אידיומטי בתוך לולאת קריאה שרוצה להיפטר מהמסיים בלי קשר למה שהוא:
while (<$fh>) {
chop; # drops whatever character ends the line
push @rows, $_;
}
קטימת רשימה. כל אלמנט מאבד את התו האחרון שלו; ערך ההחזרה הוא התו שהוסר מהאלמנט האחרון בלבד:
my @lines = ("foo\n", "bar\n", "baz!");
my $last = chop @lines; # @lines is ("foo","bar","baz"), $last is "!"
קטימת האש. הערכים נקטמים, המפתחות לא, ואיטרטור ה־each מאופס:
my %h = (a => "one\n", b => "two\n");
chop %h; # %h is (a => "one", b => "two")
קטימת השמה - chop עובד על כל lvalue, והשמה מחזירה כזה:
chop(my $cwd = `pwd`); # strip the trailing newline from pwd's output
שמירת הכל חוץ מהתו האחרון ללא שינוי המקור - אינה משימה ל־chop, שמשנה במקום. השתמש ב־substr עם אורך שלילי במקום:
my $head = substr($s, 0, -1); # $s is unchanged
מקרי קצה#
יעד ריק או לא־מוגדר: מחזיר את המחרוזת הריקה
""ומשאיר את היעד כפי שהוא.chopעלundefאינו מעלה אזהרה בעצמו; הוא פשוט מפיק"".יעד לקריאה־בלבד: מעלה
Modification of a read-only value attempted. הדבר כולל ליטרלי מחרוזת וערכים המסומנים לקריאה־בלבד דרךInternals::SvREADONLY.מחרוזות UTF-8:
chopמסיר תו אחד, לא בית אחד. תו רב־בתי בסוף המחרוזת מוסר בשלמותו ומוחזר כמחרוזת UTF-8. דגל ה־UTF-8 של היעד נשמר על מה שנותר.ערך החזרה ברשימה: מוחזר רק התו שנקטם מהאלמנט האחרון; האחרים מושלכים. אם אתה צריך כל תו שהוסר, קטום את האלמנטים בנפרד בלולאה.
תו אחד מול סיום שורה:
chopמסיר ללא תנאי תו אחד, יהיה אשר יהיה - כולל רווחים, ספרות או אותיות. להסרה מותנית של מסיים שורה (מה ש־$/אומר שהוא נראה כמותו), השתמש ב־chomp.סוגריים בפענוח:
chop($x = $y)קוטם את תוצאת ההשמה, שהיא$x.chop $x, $yמפורש כ־chop($x), $y- הפסיק אינו מרחיב את רשימת הארגומנטים שלchopללא סוגריים. כתובchop($x, $y)כאשר אתה מתכוון לצורת הרשימה.איפוס איטרציה של האש: מאחר ש־
chop %hעובר על הערכים דרך איטרטור ההאש, כל לולאתeachבעיצומה על%hמתבטלת.
הבדלים מהמקור#
תאימות מלאה עם Perl 5.42 המקורי.
ראו גם#
chomp- בן־דוד המותנה: מסיר$/גורר, לא תו אחרון ללא תנאי; מחזיר את מספר התווים שהוסרו במקום את התו עצמוsubstr- חלופה לא־הרסנית;substr($s, 0, -1)מחזיר את הכל חוץ מהתו האחרון מבלי לשנות את$ss///-$s =~ s/.\z//sהוא המקבילה הרגקסית וזו ש־chopמהיר ממנה במפורש, כיchopלא סורק ולא מעתיקlc,uc- טרנספורמציות מחרוזת אחרות (כמעט) במקום שמקבלות כל lvalue$_- היעד המשתמע כאשרchopנקרא ללא ארגומנט$/- אינו נבדק על־ידיchop; מתועד כאן רק כדי לסמן את הניגוד עםchomp