מסדי נתונים / בחירת מסד הנתונים האידיאלי / ePerl כשפרל פוגשת את HTML
ePerl כשפרל פוגשת את HTML
למען ההגינות עלי לציין שכדי להסתדר עם ePerl עליכם לדעת פרל
וHTML - אתם יודעים, נכון?
במקרה שלא, החשיבו את העמודים הבאים כמבוא מהיר. בואו נתחיל במבט על מסמך HTML בסיסי.
<HTML>
<HEAD><TITLE>A simple HTML document</TITLE></HEAD>
<BODY>
<P>
This is about as simple as it gets. No big deal.
</BODY>
</HTML>
עכשיו נטביע קצת פרל אל תוך העסק:
<HTML>
<HEAD><TITLE>A slightly less simple ePerl-HTML
document</TITLE></HEAD>
<BODY>
<P>
בדיוק לפני הפרל המוטמע
<HR>
<?
my $index;
foreach $index ( 1 .. 10 ) {
print "Currently on loop index: $index\n";
}
!>
<HR>
<P>
כעת אנחנו בדיוק אחרי הפרל.
</BODY>
</HTML>
אני מניח שתוצאת הקוד ברורה לכולם. ניתן לצפות בה כאן , כל מה שעשיתי זה בעצם לולאה קטנה שתפיק הודעה למשתמש בכל פעם שמתבצעת הפעולה.
תג הפתיחה של ePerl הוא ?> , תג הסיום הוא !>.
בנוסף ניתן לפנות לWEB ע"י פקודת פרל הרגילה - "print" בתוך בלוק הפרל.
רק עוד כמה דברים שיש לזכור בעבודה עם ePerl.
|
ePerl מזהה באופן אוטומטי את סוג המסמך ומפיקה את כותרת ה htpp המתאימה: אם המסמך הוא html היא מפיקה text/html אחרת פשוט נוצר text/plain.
|
|
ל ePerl יש קיצור מיוחד להכנסת ערכי משתנים ל html שנראה כך : <?=$VARIABLE!>.
|
|
בהמשך לתג הסיום !> ניתן להוסיף // כדי למנוע מהבלוק <? ... !> ליצור שורה חדשה. זה עוזר לניקוי קוד ה htmlשנשלח ל WEB.
|
|
ניתן לכלול קבצים נוספים ע"י שימוש בהצהרה include# .
|
אני רוצה להעלות עוד שתי נקודות לפני שנתקדם הלאה עם ePerl. לשתי ההערות יש קשר הדוק עם mod_perl/Apache
Mod.perl משמש כ interpreter לפרל המקושר ל Apache .
המשמעות היא שכל תוכנית ePerl שתרוץ לא תרוץ בפני עצמה, אלא כתהליך משני בתוך שרת האפאצ'י.
התהליך הזה מגביר את המהירות של התוכנית, אבל יש לו גם צד שלילי. הוא יוצר המון בעיות של שמות משתנים, והרי אתם לא רוצים שמשתני פרל מכמה תוכניות שונות, שבמקרה נושאים את אותו שם, יתערבבו אחד בשני.
ePerl מאוד מודאגת מהמקרה הזה, וכדי להרגיע אותה עלינו להכריז על כל המשתנים בתוספת הקידומת .my
מילת המפתח הזו גורמת לפרל לאכסן את המשתנה בקוד השייך לו בלבד ולא בשום מקום אחר.
באמת, זה עובד, זה כל מה שצריך לעשות כדי לפתור את הבעיה.
דבר שני, עלינו להיות זהירים מאוד כאשר אנחנו משתמשים בהצהרת include# , מכיוון שבעיה עלולה לצוץ. דמיינו קובץ ePerl קטן בשם TT>time.iphtml :
<?
print scalar localtime;
!>//
אני עלול לרצות לכלול את הקובץ הזה בקובץ גדול יותר:
<HTML>
<HEAD><TITLE>The Current Time</TITLE></HEAD>
<BODY>
<P>
The current time is: <B>
#include time.iphtml
</B>
</BODY>
</HTML>
(למקרה שתהיתם - iphtml זה ראשי תיבות של Internally Parsed HTML )
הטכניקה שmod_perl משתמשת בה להאצת המהירות של תוכניות פרל בשרת אפאצ'י היא טכנולוגיה הבנויה על תפיסת הקובץ לאחר שעבר קומפילציה.
המטרה היא לזכור את הקובץ האחרון שקומפל כדי לא להצטרך לקמפל אותו מחדש - דבר שהגיוני מאוד לעשות,
אבל מה קורה אם הקובץ time.iphtml שונה? התוכנית לא כל כך רגישה לשינויים שנעשים בקבצים מוכללים, כך שאתם יכולים לצפות תוצאות טרגיות במקרים שכאלה.
עמוד הבא: DBI-ממשק מסד הנתונים של פרל >>
|