סקלארים , מערכים ומערכים אסוציאטיבים

כל המשתנים ב Perl הם מאחד הסוגים הבאים: סקלרים , מערכים , או מערכים אסוציאטיבים. ובכן מה ההבדל? סקלאר (scalar) תופס הכל – הוא יכול להכיל מספרים , אותיות , ביטויים , ועוד. תמיד יהיה סימן של $ (דולר) לפניו. לכן אם ברצונך לבצע השמה של ערך למשתנה stuff$ , תעשה זאת כך:  

A word: $stuff = "rules"; A phrase: $stuff = "Colin Rules!"; Numbers: $stuff = 2;

אתה אפילו יכלו לחבר ולהחסיר כך: 

$stuff = 2 + 2; $stuff = 4 - 2;

 

במקרה זה stuff$ יהיה שווה ל 4 ואח"כ ל 2 (בהתאמה).

השמה לתוך משתנים תמיד תתצבע משמאל לימין. – להלן דוגמא לשגיאה קטלנית:  

2+2=$stuff;

משתנה מסוג מערך זהו משתנה שמחזיק כמה משתנים מסוג סקאלר בתוך חריצים ממוספרים. ניתן להוסיף חריצים ככל הנדרש כך שהמשתנה יכול לגדול בצורה דינאמית. הוא גם יכול להתכווץ – אבל זה סתם בזבוז זמן. למשתנה מסוג מערך בד"כ יהיה @ (at symbol) לפניו. כאשר מצהירים על חריצים בנפרד כיחידים נשתמש בסימן $.

אתה יכול להצהיר על כמה חריצים שרק תרצה בצורה הבאה:

 

@stuff = ("1","2","ten","Colin Rules","Perl's for winners");

 

על מנת להגיע לכל חריץ נקרא לו ע"י המספר שלו. לכן [stuff[3 שווה ל"Colin Rules" ו [stuff[1 שווה ל "2". רגע ! מדוע חריץ 4 אינו שווה ל "Colin Rules"? התשובה פשוטה , שפת Perl בדומה ל JavaScript מתחילה את מספור האינדקסים מאפס. ולכן [stuff[0 שווה ל "1" , [stuff[2 שווה ל "ten  וכך הלאה. אתה יכול לדעת כמה חריצים מכיל המשתנה ע"י התבוננות במבנה המשתנה #stuff$. לדוגמא, מספר החריצים  של המערך stuff@ שהגדרנו למעלה הינו 4. (זכור כי מתחילים לספור מ- 0).

בכדי להצהיר על חריץ יחד בכל פעם , נעשה זאת כך: 

$stuff[0] = "2000000";

 

שים לב כי ל- [stuff[0],$stuff[30],$stuff[whatever$  אין שום קשר עם stuff$  מהדוגמא לעיל. הדבר היחיד שיש להם במשותף הינו השם הזהה שלהם אשר אינו גורם לקונפליקט מפני ששני המשתנים הינם מסוג טיפוס שונה (type). באופן כללי עדיף לא לתת למשתנים שלך את אותו השם – וזה חלק מכלל מספר 5.

כלל מספר 5: יש לתת שמות למשתנים בצורה אינטואטיבית – שמות משמעותיים. כמובן שכתיבת a$ הרבה יותר מהירה מכתיבת apple$ ,אבל שתצטרך אח"כ לחזור ולנתח הכל , לא יהיה לך מושג ש a$  מייצג תפוח.

תן שם למשתנה ע"פ הפונקציונאליות שלו , אתה יכול להשתמש אפילו ב 4 מיליון תווים (או משהו כזה..) בכדי לתת שם למשתנה שלך , לכן אל תדאג בנוגע לחריגות מאורך השם. זכור כי אינך יכול להשתמש בתווי רווחים בתוך שם המשתנה אבל אתה יכול להשתמש ב קו-תחתון לצורך הפרדת מילים. לדוגמא , book_page_I_am_on$ הוא משתנה שיותר קל להבין מאשר bookpageiamon$.

באילו תווים חוקיים מותר להשתמש בשם משתנה? בחר לך מתוך ה aAbBcCdD  ועד xXyYzZ. אבל אל תשתמש בתווים: !,@,#,$,*,^,&,%,(,),~ או כל תו אחר אשר סוטה מן האלף-בית האנגלי. אם לא שרת עליהם בגן אין סיבה מיוחדת שתשתמש בהם עכשיו…

מצוין , כעת לסוג האחרון של משתנה והוא מערך אסוציאטיבי. מערכים אסוציאטיבים הם מצוינים לצורך אחסון מידע עם הקשר. הם הפשוטים יותר מבין 2 סוגי המערכים, מפני שאין צורך לזכור באיזה חריץ אחסנת כל דבר. מערכים אסוציאטיבים בד"כ מתחילים עם הסימן % (אחוז) , אבל כמו בשאר המערכים כאשר אתה קורא לחריץ יחיד עליך להשתמש ב $. על מנת להצהיר על מערך אסוציאטיבי עליך פשוט לעשות כך:

%stuff = ("sport","basketball","bike","trek","name","Don't remember",
"Age","Not old enough to drink");

 

כל ערך בדוגמא זו הינו מפתח לערך העוקב אחריו , ולכן ('stuff(`sport$ הינו “basketball  וכן ('stuff(`name$ הינו “don`t remember וכך הלאה. על מנת להצהיר על חריץ אחד בכל פעם , נעשה כך:

$stuff{'girlfriend'} = "Looking. Any leads? Call me";

 

יפה, עכשיו אתה סגור על משתנים , אבל מה התועלת בהם אלמלא תוכל להשוות אותם למשהו? אין – ולכן על מנת לתת משמעות למשתנים אלו אתה זקוק לאופרטורים של Perl.

    

קדימה לעניינים  | אופרטורים בפרל