logo


פרק 11: הפניה להפניה

הבא נרקוד, הפניה יקרה

כעת יש ברשותנו ידע בסיסי והכרחי לעבודה עם הפניות ב Perl: איך לבנות הפניה, ואיך לבטל אותה. כעת נשאלת השאלה הבסיסית: למה להשתמש בזה בכלל? למה ההפניות הללו טובות?

התשובה פשוטה: כבר השתמשתם בהם, אם עברתם על החומר של הפרק הקודם הנוגע לעבודה המורכבת עם רשימות והאשים. בפרק ההוא, הסתמכנו על הפניות אנונימיות (anonymous reference) לבניית האשים ורשימות בתוך רשימות. הפניה אנונימית הינה הפניה המצביעה לערך מפורש ולא למשתנה המכיל ערך, לדוגמא:

$days=["monday","tuesday","wednesday"];

כאן, ההפניה days$ מצביעה ישירות לערכים הנקובים שברשימה, בלי להיות קשורים למשתנה מתווך כלשהו. השתמשנו בהפניה האנונימית כאשר רצינו, לדוגמא להכניס רשימה בתוך רשימה:

בדומה, ניתן ליצור הפניה המצביעה להאש אנונימי:

$grades={"Tom Jones"=>92,"Briget 
Gidget"=>85};

חשוב מאוד להבחין בין grades$ אשר הנה הפניה המצביעה להאש, לבין האש "אמיתי", שבהגדרתו לא נשתמש בסוגריים מסולסלות אלא בסוגריים. על מנת לגשת לערך של המפתח "Tom Jones" בהאש האנונימי אנו צריכים להשתמש בביטול ההפניה:

print $grades->{"Tom Jones"};

כיוון שניתן לטפל בהפניה כמו שמטפלים בסקלר, אנו יכולים להשתמש בהפניה במרבית המקומות בהם השתמשנו בסקלר; למשל, הפניה יכולה להיות ערך של פריט ברשימה, או ערך מפתח האש. זיכרו את דוגמת ה grades$ כאשר אתם מתבוננים בדוגמאות הבאות:

@class=("Physics 101","Exam 
1",$grades);

החפץ השלישי ברשימת ה class@ הוא עתה הפניה ל grades$, אשר, כמו שראינו קודם מצביע להאש אנונימי. על מנת לגשת ל Tom Jones"" מתוך הרשימה:

print @class[2]->{"Tom Jones"};

בדומה לכך אתם יכולים להשתמש בהפניה כערך של מפתח כלשהו בהאש, אולם המפתח עצמו אינו יכול להיות הפניה.

%roster=("class"=>"Physics 
101","exam"=>1,"grades"=>$grades);

print $roster{"grades"}->{"Tom Jones"};

יחי ההבדל הקטן
תוכן עניינים
הפרמטרים שלך, בבקשה

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
יחי ההבדל הקטן  
הבא נרקוד, הפניה יקרה  
הפרמטרים שלך, בבקשה  
בואי נפליג  
פרק 12: הכרות עם mod_perl