logo


פרק 4: HTML בחטף ותבניות (Templates) רשת

קוד כמו שסבתא נהגה להכין

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

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

#!/usr/local/bin/perl
use CGI;
$cgiobject=new CGI;
print $cgiobject->header;
#we can now output HTML

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

#!/usr/local/bin/perl
use CGI;
$cgiobject=new CGI;
print $cgiobject->header;
#build a Web page from scratch
print "<HTML><HEAD>";
print "<TITLE>Grandma\'s Old Tyme Web Page</TITLE>";
print "</HEAD><BODY BGCOLOR=\"#FFFFFF\">";
print "<P ALIGN=\"CENTER\">This page was created<BR>";
print "on-the-fly on <B>".localtime(time)."</B></P>";
print "</BODY></HTML>";

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

כעת, נוכל להתקדם לבעיה של דחיסת קוד ה HTML שבתוך פקודת ה print תוך שימוש בבנאי (constructor Perl) הקרוי "here document".
here document הוא הדרך של Perl לאפשר לנו לספק גושי טקסט לפלט, תוך שימוש בצורה:

print <<TOLABEL
text here
TOLABEL

תוכלו לבחור כל TOLABEL, למרות שהבחירה הרווחת תהיה EOF, הקיצור של "end of file" (סימן סוף קובץ) . לא אמור להיות שום רווח בין הסימן >> והתווית שתבחרו, כמו שניתן לראות בדוגמה. מובן, שהתווית שלכם אמורה להיות משהו שלא מופיע בתוכן של ה here document עצמו! ניתן לראות בקלות כיצד העיצוב מחדש של קוד הסבתא הישן, ע"י שימוש ב here document משחררת את קוד ה HTML מאחיזת החנק של הפונקציה print.

#!/usr/local/bin/perl
use CGI;
$cgiobject=new CGI;
print $cgiobject->header;
#build a Web page from scratch

$time=localtime(time);
print <<EOF
<HTML><HEAD>
<TITLE>Grandma's Old Tyme Web Page</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF">
<P ALIGN="CENTER">This page was created<BR>
on-the-fly on <B>$time</B></P>
</BODY></HTML>
EOF

יהיה הרבה יותר קל לבצע פעולות גזור-הדבק (cut and paste) של HTML , למשל מתוך עורך HTML לתוך סקריפט של Perl וזאת בגלל שאין צורך להתאימו ל here document. בדוגמא הקודמת, חישבנו את הזמן הנוכחי (localtime(time במהירות, אולם לא יכולנו להכניס ביטו Perl לתוך ה here document . למזלנו, הכנסת משתנה לתוך ה here document מותרת. לכן נציב מראש את הזמן לתוך time$ אשר יופיע בתוך ה here document.

למרות זאת, הטכניקה של here document דורשת מכם לפלוט קוד HTML ברור, וזה משאיר מספר בעיות:

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

2. ישום שינויים בעיצוב הHTML יכול להיות מטרד לא קטן, כיוון שיש צורך למצוא את דרכנו בקוד של Perl.

3. בדרך כלל, אתם צריכים שרק חלק מהעמוד יהיה "חי", בעוד שאר העמוד נשמר. למה להשתמש ב Perl לתכנות של רוב העמוד שכלל לא משתנה? נחזור לנקודה זו כאשר נסתכל על תבניות (template) לקראת סוף הפרק.

ה Perl שאתם צריכים לדעת: פרק 4 "HTML בחטף ותבניות (Templates) רשת "
תוכן עניינים
המתווך שלנו: CGI.pm

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