ביצוע הפורמט-
להלן תכנית:
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
========================================
להוספת תגובה, אנא התחברו לדרכונט.