logo


פרק 2: קישור Perl לעמודי הרשת

CGI ותיכנות מונחה עצמים (object oriented) ב Perl: פלט

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

#!/usr/bin/perl
use CGI;
#create an instance of the CGI object 
$cgiobject = new CGI;

#grab the values submitted by the user
$name=$cgiobject->param("username");
$age=$cgiobject->param("userage"); 

#output HTML header to web browser
print $cgiobject->header;

#evaluate data, output appropriate message
print "<HTML><BODY>";
print "<CENTER>Hello, $name</CENTER><BR>";
if ($age<18)
 {print "<H3>We\'re sorry, but you are quite young ".
        "to use Currency Central. Money is the root ".
        "of all evil. Please ask a parent.</H3>"}
else
 {print "<H3>Congratulations! You are beyond the age ".
        "of corruption. Click <a href=\"next.html\">here</a>".
        "to continue.</H3>"}

print "</BODY></HTML>";

בואו נעצור את סיפור העלילה המסמרר שקראנו בנקודה בה אנו שולחים את ה HTML header לדפדפן-- ה CGI object מפעילה את המתודה header, השולחת עם הפעלתה שורה מתאימה של פקודות header text לדפדפן כדי שיציג את כמו שצריך פקודות הפלט בHTML שיבואו לאחר מכן. בעצם אין לנו שום צורך לדעת שום דבר על ה header עצמו, זה מה שהופך את CGI object לכלי יפיפה כל כך. פשוט שילחו את ה header לפני שאתם שולחים את ה html והכל יהיה בסדר.

בסופה של תוכנית Perl זו אנו בונים עמוד אינטרנט חדש. תוך שימוש בפונקצית ה print המוכרת, אנו מדפיסים את פקודות ה HTML הנדרשות כדי ליצור את העמוד המבוקש. שימו לב לאפשרות של שילוב מידע מתוך תוכנית ה Perl לתוך העמוד שאנו יוצרים כפלט. לדוגמא, הברכה"Hello, $name" תכניס את שם המשתמש לברכה.

משפט ה if...else משמש להערכת גיל המשתמש. במקרה זה, הפעולה היחידה שנבצע היא לפלוט הודעה שונה בכל פעם ע"פ הגיל הנתון.

ישנם עוד כמה טריקים של Perl המפוזרים בדוגמה שלנו ששווים בחינה מדוקדקת. שימו לב לקו הנטוי (\) לפני הגרש הבודד במילה "We're". זה בסה"כ מבטיח ש Perl תדפיס גרש יחיד ולא תפרש את הגרש כחלק מהצהרה כלשהי. ככלל, נשתמש בסימן של קו נטוי במקרים בהם Perl עלולה לפרש תו בצורה לא נכונה.

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

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

קלט :Perl ותכנות מונחה עצמים ב CGI
תוכן עניינים
בדיקת טפסים

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