logo


פרק 10: ניהול רשימות והאשים (Hashs)

האש של האשים

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

קחו לדוגמא את ההאש של Nick Plato צאצא רחוק למשפחת אפלטון:

%students=("Nick Plato"=>{"year"=>"2",
"GPA"=>"2.5",
"major"=>"Phys. Ed.",
"email"=>"nplato\@school.edu"});

האש הסטודנט מכיל מפתח אחד "Nick Plato", אשר הערך הצמוד לו הוא האש. אנו יכולים לפנות לדוגמא ל GPA (ממוצע הציונים) של Nick:

$students{"Nick Plato"}{"GPA"}

אי אפשר לחגוג לבד ולכן נוסיף עוד כמה סטודנטים לתערובת:

$students{"Mary Pitts"}=({"year"=>"4",
"GPA"=>"4","major"=>"Economics",
"email"=>"mpitts\@school.edu"});
$students{"Sally Cummings"}=({"year"=>"1",
"GPA"=>"3.3","major"=>"Undecided",
"email"=>"scummings\@school.edu"});

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

#Double-Sort students by GPA and keys
print "\nAll students sorted by GPA:\n";
foreach $student 
(reverse sort {$students{$a}{GPA}<=>$students{$b}{GPA} } 
keys (%students)) 
{print "$student\n";
foreach $recorditem (sort keys %{$students{$student} }) 
{print "\t$recorditem: $students{$student}{$recorditem}\n"}
}

רשימת כל הסטודנטים מיוצגת ע"י הפונקציה (keys(%students. אנו רוצים למיין רשימה זו ע"פ ערך GPA יורד. לפיכך אנו מפעילים מיון הפוך רגיל שבו אנו משווים את ערך ה GPA מתוך האש הסטודנטים ({students{$b$ ו {students{$a$ ) כאשר אנו מבצעים פעולות על כל האש של סטודנט, אנו שולפים את רשימת הנתונים מתוך האש הסטודנט ({{keys %{$students{$student וממינים אותם בסדר אלפביתי (כברירת מחדל). לאחר מכן כל רשימה כזו נפלטת - כמו שראינו כאשר ניגשנו ל GPA של Nick Plato.

האש של רשימות
תוכן עניינים
סיכום

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