אתה נמצא כאן יסודות השפה  »  פורמטים  »  ביצוע הפורמט

ביצוע הפורמט- להלן תכנית:

format STUDENT =
========================================
| name : @<<<<<<<<<<<<<<<<<<<<<<
| $name
| adress : street :@<<<<<<<<<<<<<<<<<<<<<<
| $street
| number :@<<<<<<<<<<<<<<<<<<<<<<
| $number
| city :@<<<<<<<<<<<<<<<<<<<<<<
| $city
| phone_number :@<<<<<<<<<<<<<<<<<<<<<<
| $phone_number
| grades:
| course1=@<<         course2=@<<         course3=@<<
| $grade1                 ,$grade2              ,$grade3          #הרווחים כאן לא משפיעים
|                                                                                 # על הפורמט, הם רק לשם נוחות
========================================
.

open ( STUDENT
/*הקובץ שנפתח*/
  ,">lables_to_print")
/*קובץ הפלט*/
  || die "cannot create";
open (DETAILS,"details")
/*קובץ כלשהו שנרצה לקרוא ממנו רשומות שמגיע עם הפרדת נקודותיים בין השדות*/
  || die "cannot open details";
while (<DETAILS>) {
     chop;
    ($name, $street, $number, $city, $phone_number, $grade1, $grade2, $grade3) = split (/:/);
/*שבירת הרשומה שנקראה מהקובץ לשדות והשמת הערכים במשתנים הנשלחים לפורמט*/

     write STUDENT;      #שליחת המשתנים להדפסה בצורת הפורמט לקובץ הפלט
} #סיום הלולאה

האופרטור write מקבל שם קובץ בו מצויה הגדרת הפורמט וכותב את הפורמט בעל אותו שם כמו הקובץ בו הוא נמצא. בקובץ STUDENT נמצא הפורמט STUDENT . בהנחה שבקובץ DETAILS יש רשומות המסודרות עם נקודותיים המפרידות בין השדות בצורה הבאה:

student1:streetname1:number1:jerusalem:02-1234567:100:100:100
student2:streetname2:number2:tel aviv :03-1234567:100:100:100

לולאת ה - while קוראת כל שורה מקובץ הפרטים, שורה אחרי שורה. מהשורה מקצצים את ה n\ שבסופה, שוברת אותה לשדות. האופרטור write קורא לפורמט. הפרמטר שלו הוא הקובץ בו מוגדר הפורמט והקובץ עליו נכתוב. כברירת מחדל, שם הפורמט שנחפש יהיה כשם הקובץ המכיל את הפורמט שציינו כפרמטר. כל שדה בפורמט מוחלף עם ערך המשתנה המתאים לו, לבסוף בקובץ lables_to_print יהיה הטקסט הבא:

format STUDENT =
========================================
| name : student1
| adress : street :streetname1
| number :number1
| city :jerusalem
| phone_number :02-1234567
| grades:
| course1=100         course2=100         course3=100
========================================
========================================
| name : student2
| adress : street :streetname2
| number :number2
| city :tel aviv
| phone_number :03-1234567
| grades:
| course1=100         course2=100         course3=100
========================================









להוספת תגובה, אנא התחברו לדרכונט.