פרק 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"}; יחי ההבדל הקטן
|