تحتوي كل حزمة في لغة Perl على جدول رموز منفصل، وبناء جملة التعريف هو:
حزمة مايباك؛
يحدد هذا البيان حزمة تسمى mypack ، ويتم تخزين أسماء جميع المتغيرات والإجراءات الفرعية المحددة بعد ذلك في جدول الرموز المرتبط بالحزمة حتى يتم العثور على بيان حزمة آخر.
يحتوي كل جدول رموز على مجموعته الخاصة من أسماء المتغيرات والروتينات الفرعية. كل مجموعة من الأسماء غير مرتبطة، لذلك يمكن استخدام نفس اسم المتغير في حزم مختلفة لتمثيل متغيرات مختلفة.
للوصول إلى متغيرات حزمة أخرى من حزمة واحدة، يمكنك تحديدها عن طريق "اسم الحزمة + نقطتين مزدوجتين (::) + اسم المتغير".
يرتبط جدول الرموز الافتراضي الذي يخزن أسماء المتغيرات والإجراءات الفرعية بالحزمة المسماة main . إذا تم تعريف حزم أخرى في البرنامج وتريد الرجوع مرة أخرى إلى استخدام جدول الرموز الافتراضي، فيمكنك إعادة تحديد الحزمة الرئيسية:الحزمة الرئيسية؛
بهذه الطريقة، سيعمل البرنامج التالي كما لو أن الحزمة لم يتم تعريفها مطلقًا، ويتم تخزين أسماء المتغيرات والإجراءات الفرعية كالمعتاد.
الملفات في المثال التالي هي الحزم الرئيسية وFoo. يتم استخدام المتغير الخاص __PACKAGE__ لإخراج اسم الحزمة:
بتنفيذ البرنامج أعلاه تكون نتيجة الإخراج هي:
اسم الحزمة: main 1 اسم الحزمة: Foo 10 اسم الحزمة: main 100 اسم الحزمة: main 10
توفر لغة Perl كلمتين رئيسيتين: BEGIN و END. يمكن أن يحتوي كل منها على مجموعة من البرامج النصية للتنفيذ قبل أو بعد تشغيل نص البرنامج.
تنسيق بناء الجملة كما يلي:
البداية { ... } النهاية { ... } البداية { ... } النهاية { ... }
يتم تنفيذ كل وحدة BEGIN بعد تحميل البرنامج النصي Perl وتجميعه ولكن قبل تنفيذ العبارات الأخرى.
يتم تنفيذ كل كتلة بيان END قبل خروج المترجم.
تُعد كتل عبارات BEGIN و END مفيدة بشكل خاص عند إنشاء وحدات Perl.
إذا كنت لا تزال لا تفهم، يمكننا أن ننظر إلى مثال:
بتنفيذ البرنامج أعلاه تكون نتيجة الإخراج هي:
هذه هي كتلة بيان BEGIN ومثيلات الحظر.
في Perl5، يتم استخدام حزم Perl لإنشاء وحدات.
وحدة Perl عبارة عن حزمة قابلة لإعادة الاستخدام. اسم الوحدة هو نفس اسم الحزمة، ولاحقة الملف المحدد هي .pm .
أدناه نحدد وحدة Foo.pm، الكود هو كما يلي:
هناك بعض الأشياء التي يجب ملاحظتها حول الوحدات في Perl:
الوظائف التي تتطلبها واستخدامها سوف تقوم بتحميل الوحدة النمطية.
@INC عبارة عن مصفوفة خاصة مضمنة في Perl تحتوي على مسار الدليل إلى موقع إجراءات المكتبة.
تستدعي وظائف الطلب والاستخدام وظيفة التقييم لتنفيذ التعليمات البرمجية.
1 في النهاية؛ يُرجع التنفيذ القيمة TRUE، وهو أمر مطلوب، وإلا فسيتم إرجاع خطأ.
يمكن استدعاء الوحدات من خلال الدالة require ، كما هو موضح أدناه:
ويمكن أيضًا الرجوع إليها من خلال وظيفة الاستخدام:
لاحظنا أن المرجع المطلوب يحتاج إلى استخدام اسم الحزمة لتحديد الوظيفة، لكن مرجع الاستخدام لا يفعل ذلك. والفرق الرئيسي بين الاثنين هو:
1. يتم استخدام require لتحميل الوحدة النمطية أو برنامج Perl (يمكن حذف اللاحقة .pm، ولكن يجب أن يكون .pl موجودًا)
2. يتم تقديم بيان استخدام Perl في وقت الترجمة، ويتم تقديم الطلب في وقت التشغيل.
3. عندما يقدم استخدام Perl وحدة نمطية، فإنه يقدم أيضًا الوحدة الفرعية للوحدة النمطية. ومع ذلك، لا يمكن تقديم الأمر require ويجب إعادة الإعلان عنه
4. يتم البحث عن USE في @INC الافتراضي الحالي بمجرد عدم وجود الوحدة النمطية في @INC، لا يمكن تقديمها باستخدام USE، ولكن يمكن تحديد المسار.
5. عندما يشير الاستخدام إلى وحدة نمطية، إذا كان اسم الوحدة يحتوي على نقطتين :: مزدوجتين، فسيتم استخدام النقطتين المزدوجتين كفاصل للمسار، وهو ما يعادل / ضمن Unix أو ضمن Windows. يحب:
استخدم MyDirectory::MyModule
يمكن تصدير رموز القائمة من وحدة الاستخدام عن طريق إضافة العبارة التالية:
تتطلب مصدرًا;@ISA = qw(Exporter);
تحتوي المصفوفة @EXPORT على أسماء المتغيرات والوظائف المصدرة افتراضيًا:
وحدة الحزمة;تتطلب مصدر;@ISA = qw(Exporter);@EXPORT = qw(bar blat); # الرموز المصدرة الافتراضية sub bar { print "Hello $_[0]n" }sub blat { print "World $ _ [0]n" }sub splat { print "Not $_[0]n" } # غير مُصدَّر!1;
من السهل إنشاء وحدة Perl من خلال الأداة h2xs التي تأتي مع توزيعة Perl.
يمكنك كتابة h2xs في وضع سطر الأوامر لرؤية قائمة المعلمات الخاصة به.
تنسيق بناء الجملة h2xs:
$ h2xs -AX -n اسم الوحدة
وصف المعلمة:
-A يتجاهل آلية التحميل التلقائي
-X يتجاهل عناصر XS
-n يحدد اسم وحدة الامتداد
على سبيل المثال، إذا كانت الوحدة النمطية الخاصة بك موجودة في ملف Person.pm ، فاستخدم الأمر التالي:
$ h2xs -AX -n شخص
تنفيذ البرنامج أعلاه سوف ينتج:
كتابة الشخص/lib/Person.pmWriting Person/Makefile.PLWriting Person/READMEWriting Person/t/Person.tWriting Person/ChangesWriting Person/MANIFEST
ضمن دليل الشخص، يمكنك رؤية الدلائل المضافة حديثًا وأوصاف الملفات:
الملف التمهيدي: يحتوي هذا الملف على بعض معلومات التثبيت، وتبعيات الوحدة النمطية، ومعلومات حقوق الطبع والنشر، وما إلى ذلك.
التغييرات: يعمل هذا الملف كملف سجل التغيير لمشروعك.
Makefile.PL: هذا هو منشئ Perl Makefile القياسي. يستخدم لإنشاء ملف Makefile.PL لتجميع الوحدة النمطية.
البيان: يتم استخدام هذا الملف لإنشاء توزيع إصدار الوحدة النمطية من النوع tar.gz تلقائيًا. بهذه الطريقة، يمكنك نقل الوحدة الخاصة بك إلى CPAN ونشرها أو توزيعها على الآخرين. أنه يحتوي على قائمة بجميع الملفات الموجودة في هذا المشروع.
Person.pm: هذا هو ملف الوحدة الرئيسي الذي يحتوي على رمز معالج mod_perl الخاص بك.
Person.t: بعض البرامج النصية للاختبار لهذه الوحدة. بشكل افتراضي، يقوم فقط بالتحقق من تحميل الوحدة، ويمكنك إضافة بعض وحدات الاختبار الجديدة.
ر/: ملف الاختبار
lib/: الدليل حيث يتم تخزين كود المصدر الفعلي
يمكنك استخدام الأمر tar (في Linux) لحزم الدليل أعلاه في Person.tar.gz.
يمكننا فك ضغط وتثبيت ملف Person.tar.gz الذي قمنا بضغطه للتو، والخطوات هي كما يلي:
tar xvfz Person.tar.gzcd Personperl Makefile.PLmakemake تثبيت
قم أولاً بتشغيل "Perl Makefile.PL" لإنشاء ملف Makefile في الدليل الحالي؛
ثم قم بتشغيل "make" لتجميع وإنشاء ملفات المكتبة المطلوبة؛
ثم استخدم "إجراء اختبار" لاختبار ما إذا كانت نتيجة التجميع صحيحة؛ وأخيرًا، قم بتشغيل "إجراء التثبيت" لتثبيت ملف المكتبة في دليل النظام، وتنتهي عملية التجميع بأكملها.