logo


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

האש של רשימות

נשאלת השאלה, מה כבר יכול להיות מבלבל יותר מרשימה של האשים, וכן מתי כבר נפסיק לקדם את המכוניות של טויוטה? התשובות: האש של רשימות, ועכשיו. בכדי להדגים בצורה הטובה ביותר האש של רשימות, נעזוב את עולם המכוניות ונחשוב על האקדמיה. ליתר דיוק על רשימות תלמידים. מאיש מכירות של מכוניות משומשות הפכנו בבת אחת לפרופסורים, ואנו מלמדים 3 כיתות ביום (חיי האקדמיה הקשים מנשוא) PSYCH 101A, PSYCH 101B ו 103 PSYCH. בכל כיתה ישנה רשימת סטודנטים.

לפיכך יש לנו האש קלאסי - קוד הקורס הוא המפתח (PSYCH 101A), ורשימת הסטודנטים היא הערך. הבעיה היא שרשימת הסטודנטים היינה רשימה בפני עצמה.

%roster=("Psych 101A"=>["Sue Draper",
"Mike Jones",
"Iiago Stein"]);

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

$roster{"Psych 101B"}=(["J.P. Hertz",
"Mark Simon","Freedy Bender"]);
$roster{"Psych 103"}=(["Iiago Stein",
"Freedy Bender","Jill Portman"]);

שמתם לב שישנם מספר סטודנטים המופיעים גם ב 101 PSYCH וגם ב 103 PSYCH. אלו השקדנים. נניח שפשוט תרצו את התשובה לשאלה - מי הם הסטודנטים בכיתה 103 PSYCH?

 foreach $student ( @{$roster{"Psych 
 103"} })
 { print "$student " }

נותן:

Iiago Stein Freedy Bender Jill Portman

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

foreach $student 
( sort by_lastname @{$roster{"Psych 103"} })
{ print "$student " }

sub by_lastname {
($a_lastname)=$a=~/(\w+)$/;
($b_lastname)=$b=~/(\w+)$/;
return $a_lastname cmp $b_lastname
}

נותן:

Freedy Bender Jill Portman Iiago Stein

יום אחד, סטודנט חדש מגיע ל B101 PSYCH, אבל עם האש הרשימות שלנו איננו צריכים לכתוב את רשימת הסטודנטים מהתחלה - אפשר פשוט לדחוף (push) את הסטודנט החדש לתוך הרשימה שהינה הערך של המפתח "B101 PSYCH".

push(@{$roster{"Psych 101B"} },"N.K. 
Block");

אולם עדיין ישנה הרגשה כאילו משהו חסר להשלמת התמונה. רשימת הסטודנטים שלנו נוחה אולם רשימת שמות בלבד מוגבלת בשימוש...בסטודנט יש יותר משם. למעשה ניתן לומר שסטודנט בעצמו היינו חלק מהאש.

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

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