تعد لغة Perl لغة معالجة بيانات نصية قوية جدًا.
في Perl، يمكنك استخدام التنسيق لتحديد قالب، ثم استخدام الكتابة لإخراج البيانات وفقًا للقالب المحدد.
صيغة تعريف تنسيق Perl هي كما يلي:
تنسيق FormatName =fieldlinevalue_one، value_two، value_threefieldlinevalue_one، value_two.
تحليل المعلمة:
FormatName : اسم منسق.
خط الحقل : خط تنسيق يستخدم لتحديد تنسيق خط الإخراج، بأحرف مثل @،^،،|.
value_one, value_two... : صفوف البيانات المستخدمة لإدراج القيم في صفوف التنسيق السابقة، كلها متغيرات بيرل.
: رمز النهاية .
فيما يلي مثال تنسيق بسيط:
نتيجة الإخراج لتنفيذ المثال أعلاه هي:
الأول: جوجل الثاني: Codercto الثالث: Taoba
تبدأ أسطر التنسيق بـ @ أو ^، ولا يتم إجراء أي استبدال متغير على هذه الأسطر.
الحقول @ (يجب عدم الخلط بينها وبين رمز المصفوفة @) هي حقول عادية.
يحدد طول <, >,| بعد @,^ طول الحقل إذا تجاوز المتغير الطول المحدد، فسيتم اقتطاعه.
<، >،| تمثل أيضًا المحاذاة اليسرى، والمحاذاة اليمنى، والمحاذاة المركزية على التوالي.
يتم استخدام الحقل ^ لحشو كتلة النص متعددة الأسطر.
ويكون تنسيق نطاق القيمة كما هو موضح في الجدول التالي:
شكل | معنى نطاق القيمة |
---|---|
@<<< | إخراج محاذاة لليسار |
@>>> | الإخراج مبرر الحق |
@||| | مركز الإخراج الانحياز |
@##.## | رقم الدقة الثابتة |
@* | نص متعدد الأسطر |
الحرف الأول في كل حقل قيمة هو حرف تعبئة السطر. عند استخدام الحرف @، لا يتم إجراء أي تنسيق للنص.
في الجدول أعلاه، باستثناء حقل القيمة متعدد الأسطر @*، فإن عرض الحقل يساوي العدد المحدد من الأحرف بما في ذلك الحرف @، على سبيل المثال:
@###.##
ويعني ذلك عرض سبعة أحرف، أربعة قبل العلامة العشرية واثنان بعد العلامة العشرية.
الأمثلة هي كما يلي:
نتيجة الإخراج للمثال أعلاه هي:
===================== علي 20 2000.00========= ================================================================================================== ========كوديركتو 30 2500.00 ================================================================== = ================================================================================================================================== = =========
$~ ($FORMAT_NAME): اسم التنسيق $^ ($FORMAT_TOP_NAME): يتم تخزين اسم تنسيق الرأس الحالي في
$% ($FORMAT_PAGE_NUMBER): رقم صفحة الإخراج الحالية
$= ($FORMAT_LINES_PER_PAGE) : عدد الأسطر في كل صفحة
$|.$FORMAT_AUTOFLUSH: ما إذا كان سيتم تحديث المخزن المؤقت للإخراج تلقائيًا
$^L ($FORMAT_FORMFEED): السلسلة التي يجب إخراجها قبل تخزين رأس كل صفحة (باستثناء الصفحة الأولى) في
فيما يلي مثال على التنسيق البسيط باستخدام $~:
نتيجة الإخراج لتنفيذ المثال أعلاه هي:
===================== النص # البرنامج التعليمي ============ ================================================================================================= === النص # البرنامج التعليمي ===========================
إذا لم يتم تحديد $~، فسيتم إخراج تنسيق يسمى STDOUT:
نتيجة الإخراج لتنفيذ المثال أعلاه هي:
----------------تنسيق STDOUT----------------
في المثال التالي، نوضح استخدام متغيرات $^ أو $FORMAT_TOP_NAME عن طريق إضافة معلومات رأس التقرير:
نتيجة الإخراج للمثال أعلاه هي:
===================== العمر ========================================================================================= ================================================================================================= = =======علي 20 2000.00========================= === ======================كوديركتو 30 2500.00 ================================================================== = =================================================================================================================================== = =========
يمكننا أيضًا استخدام $% أو $FORMAT_PAGE_NUMBER لتعيين ترقيم الصفحات للتقرير:
نتيجة الإخراج للمثال أعلاه هي:
=====================الاسم العمر الصفحة 1=========== ================================================================================================= = =========علي 20 2000.00======================== === =========================كوديركتو 30 2500.00 ================================================================== = ================================================================================================================================== = =========
بشكل افتراضي، تقوم وظيفة الكتابة بإخراج النتائج إلى ملف الإخراج القياسي STDOUT، ولكن يمكننا أيضًا جعلها تقوم بإخراج النتائج إلى أي ملف آخر. إن أبسط طريقة هي تمرير متغير الملف كمعلمة للكتابة، مثل:
اكتب(ملفي);
يقوم الكود أعلاه بكتابة المخرجات إلى الملف MYFILE باستخدام تنسيق الطباعة الافتراضي المسمى MYFILE.
ولكن بعد ذلك لا يمكنك استخدام المتغير $~ لتغيير تنسيق الطباعة المستخدم. يؤثر متغير النظام $~ فقط على متغير الملف الافتراضي. يمكننا تغيير متغير الملف الافتراضي، وتغيير $~، ثم استدعاء الكتابة.
بعد التنفيذ الناجح يمكننا عرض محتويات ملف tmp كما يلي:
$ cat tmp =========== الإدخال في الملف =========== ==============================================================
عندما نتمكن من استخدام التحديد لتغيير متغير الملف الافتراضي، فإنه يعيد التمثيل الداخلي لمتغير الملف الافتراضي الحالي، حتى نتمكن من إنشاء إجراءات فرعية ومخرجات وفقًا لأفكارنا الخاصة دون التأثير على أجزاء أخرى من البرنامج.
بعد التنفيذ الناجح يمكننا عرض محتويات ملف tmp كما يلي:
$ cat tmp =========== الإدخال في الملف =========== ================================================================================================= ===== الإدخال في الملف باستخدام التنسيق المحدد ===========================