y///#
מתעתק תווים במחרוזת. y/// הוא שם נרדף ל־tr/// - השניים זהים מכל בחינה.
האיות y ניתן עבור מאמיני sed, שזיכרון השרירים שלהם מפיק y/abc/ABC/ במקום tr/abc/ABC/. המפרסר של Perl מקבל אחד מהם; ה־op התוצאתי זהה. השתמש באיות שנקרא יותר טוב בקוד שמסביב - אם הקובץ כבר מצטט סקריפט sed, y/// לעיתים מתאים; ב־Perl רענן, tr/// נפוץ יותר.
תקציר#
y/SEARCHLIST/REPLACEMENTLIST/cdsr
$var =~ y/SEARCHLIST/REPLACEMENTLIST/cdsr
y/SEARCHLIST/REPLACEMENTLIST/ # transliterates $_
מה מקבלים בחזרה#
זהה ל־tr///:
ללא
/r: מספר התווים שהותאמו (והוחלפו או נמחקו), לאחר שינוי המטרה במקום.עם
/r: מחרוזת חדשה עם התעתוק שהוחל; המקור אינו נוגע.
דוגמאות#
תעתוק קלאסי בסגנון sed להפיכה לאותיות גדולות על $_:
while (<>) {
y/a-z/A-Z/;
print;
}
ספירת תנועות מבלי לשנות את המחרוזת, באמצעות /r להשלכת העותק המתעתק:
my $vowels = ($text =~ y/aeiouAEIOU//) ; # count in place is fine too
my $count = () = $text =~ /[aeiouAEIOU]/g;
הסרת כל דבר חוץ מספרות ממחרוזת (עותק לא הרסני דרך /r, השלמה + מחיקה):
my $digits = $phone =~ y/0-9//cdr; # "(415) 555-1212" → "4155551212"
Rot13 - שורת ה־y/// של ספר הלימוד:
(my $coded = $plain) =~ y/A-Za-z/N-ZA-Mn-za-m/;
מקרי קצה#
ראה tr/// לרשימה המלאה. שניים שכדאי לחזור עליהם כאן:
אין שיבוץ משתנים.
y/$x/$y/מתעתק את התווים המילוליים$,xכנגד$,y- לא את תוכן אותם משתנים. זה תואם ל־tr///והוא הבאג היחיד הנפוץ ביותר בתרגום מ־sed ל־Perl.y'...'...'מבטל טווחים. עם מתחמי גרש בודד,-הוא מילולי:y'a-z'A-Z'מתעתק רק אתa,-,zכנגדA,-,Z.
הבדלים מ־upstream#
תואם מלא ל־upstream Perl 5.42.