עושים סדר בקלט.

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

open (DATA, "/usr/people/ferm/movies.dat"); my @data = <DATA>; close (DATA);

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

# Always remember to put this line at the top! #!/usr/local/bin/perl # This opens the movie database and saves it into the @data variable. open (DATA, "/usr/people/ferm/movies.dat"); my @data = <DATA>; close (DATA); # Have we forgotten already? This gets the input regardless of what # method was used and stores it into the $in variable. my $in; if ($ENV{'REQUEST_METHOD'} eq "GET") { $in = $ENV{'QUERY_STRING'}; } else { $in = <STDIN>; }

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

$in =~ s/%(..)/pack("c",hex($1))/ge;

זוהי פקודת חפש והחלף (search-and-replace) אשר בודקת אם ישנם תווים המתחילים ב* ומחליפה אותם בתווים אשר ניתן לקרוא. וכך הקלט מקבל ניחוח טוב יותר (ללא ה"זבל"(

אם כן, כעת יש בידך טקסט נורמלי אך עדיין ישנן כמה בעיות. אם הכותרת (title) ארוכה יותר ממילה אחת אז המשתנה $in יכיל סימני "+" היכן שאמורים להיות רווחים (spaces).

ולכן נבצע:  

$in =~ s/\+/ /g;

זוהי פונקציה סטנדרטית של פרל אשר מחפשת את סימני ה "+" ומחליפה אותם ברווחים.

ולבסוף , עלינו להוציא את המידע מהמשתנה $in ולהעניק לו שם יותר תיאורי ,  

my %movie = split (/=/, $in);

קוד זה מפצל את השורה לתוך המערך האסוציאטיבי %movie.
 מכיוון ששם השדה בטופס היה "title" , המידע אוחסן בחריץ $movie{'title'}.
 למרות שחלק זה אינו הכרחי, זה עוזר לי לעקוב אחר מה שקורה.

כעת שיש לנו את המידע , הגיע הזמן לעשות משהו עם זה.
	

בדיוק כמו בסרטים  | ביצוע התאמות