איך שהתינוק שלנו גדל..

מצויין , כמעט ויש לך את זה… הנה כבר הפכת מתינוק לנסיך perl של ממש. אבל בתור נסיך יש לך צורך בסוגי נשק נוספים , הנה כמה "כלי נשק" נוספים שיעזרו לך :

 פיצול בבקשה… :

פיצול (splitting) הינה פונקציה אשר תחסוך לך זמן וכסף רב. (טוב , לפחות זמן..)

פונקציית split מחפשת תבנית מסויימת בתוך מחרוזת ומפצלת את המחרוזת לתוך מערך על בסיס אותה תבנית , התבונן בדוגמא הבאה: 

#!/usr/local/bin/perl # I have a string. $stuff = "Colin is so cool"; # I decide that I want to split it up by spaces into an array. @stuff = split (/ /, $stuff); # I then want to print out each slot on a different line. for ($i = 0; $i <= $#stuff; $i++) { print "Slot $i: $stuff[$i]\n"; } # Find out how many words there were like this. print "There were $#stuff words.\n";

 

שחק קצת עם כלי זה ותיווכח בעצמך כמה יעיל הוא עשוי להיות.

חפש והחלף:

כלי היעיל במיוחד עבור תיקון שגיאות כתיב במחרוזות. וכך זה עובד :

כתוב  =~ s/searchstring/replacestring/gi; אחרי המחרוזת עליה ברצונך להריץ חיפוש\החלפה. עליך להחליף את searchstring ואת replacestring במחרוזות עליהן אתה רץ. וזה מתבצע כך:

$stuff =~ s/bad/bad bad leroy brown/gi;

 

ובכן, אם ברצוני לתקן את כל שגיאות ה "e-ים שלפני ה "i”-ים אעשה זאת כך:  

# I have this string: $stuff = "beleive releive greive"; # I want to fix all the mistakes. $stuff =~ s/ei/ie/gi; # Then I want to print out the output. print "$stuff";

החלק היפה בכלי זה שניתן להשתמש בו ב 2 צורות שונות. בסוף הפקודה ישנם 2 אותיות : "g" ו "i" – אלו בעצם 2 אופציות: "g" אומר לפקודה לחפש ולהחליף את כל ההופעות של המחרוזת. "i” אומר לפקודה להתעלם מ case sensitive . ישנה אופציה נוספת והיא "o"  אשר באה במקום "g" ואומרת להחליף רק את ההופעה הראשונה. ניתן להשתמש באחת, כולם או אף אחת מן האופציות של פקודה זו.

ולבסוף , ביכולתך להשתמש בפקודה זו אפילו על מנת לקבוע אם קיימת תת מחרוזת בתוך מחרוזת כלשהי. נניח שברצונך לבצע משהו אך ורק אם תת המחרוזת "cool" נמצאת במחרוזת שלך, אז הדרך הקשה שאתה כבר מכיר זה לפצל את המחרוזת לכל המילים שבה ע"י התו המפריד ואז לרוץ עם לולאה על גבי המערך עם המילים ולחפש את המילה "cool".

אבל ישנה דרך קלה יותר לחיפוש מהיר : 

$stuff =~ /cool/

 

משפט זה יחזיר ערך אמת אם המילה "cool” נמצאת במחרוזת וערך שקר אם היא איננה נמצאת במחרוזת. כמובן שניתן לבצע את ההיפך על ידי:

$stuff != /cool/

משפט זה יחזיר אמת אם המילה "cool" איננה נמצאת במחרוזת.

אתה יכול לשלב זאת בתנאי if בצורה כזו:


if ($stuff =~ /cool/) { statements }

ובכן אתה עדיין פה? זה סימן שאתה מרותק ומוקסם מעולם ה perl , ובכן עדיין לא סיימנו – המשך הלאה על מנת לראות כיצד הופכים את הסקריפט ל CGI.

קצת מניפולציות  | הפיכת פרל ל-סי.ג'י.איי