هذا هو أمر perlrun الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
perlrun - كيفية تنفيذ مترجم Perl
موجز
بيرل [ -sTtuUWX ] [ -hv ] [ -V[:configvar]]
[ -cw ] [ -d[t] [:المصحح]] [ -D[الرقم / القائمة]]
[ -بنا ] [ -Fالنمط ] [ -l[ثماني]] [ -0[ثماني / سداسي عشري]]
[ -Iدير ] [ -m[-]وحدة ] [ -M[-]'وحدة...' ] [ -f ] [ -C [الرقم / القائمة] ]
[ -S ] [ -x[دير]] [ -i[تمديد]]
[[-e|-E] 'أمر' ] [ -- ] [ ملف البرنامج ] [ حجة ] ...
الوصف
الطريقة العادية لتشغيل برنامج Perl هي جعله قابلاً للتنفيذ مباشرةً، أو عن طريق
تمرير اسم الملف المصدر كوسيطة في سطر الأوامر. (تفاعلية
بيئة Perl ممكنة أيضًا - راجع perldebug للحصول على تفاصيل حول كيفية القيام بذلك.)
عند بدء التشغيل، يبحث Perl عن برنامجك في أحد الأماكن التالية:
1. سطرًا محددًا عبر السطر -e or -E التبديل على سطر الأوامر.
2. موجود في الملف المحدد بواسطة اسم الملف الأول في سطر الأوامر. (لاحظ أن
الأنظمة التي تدعم "#!" تدوين استدعاء المترجمين الفوريين بهذه الطريقة. راجع "موقع
بيرل".)
3. تم تمريره ضمنيًا عبر الإدخال القياسي. هذا يعمل فقط إذا لم يكن هناك اسم الملف
الوسائط--لتمرير الوسائط إلى برنامج يقرأه STDIN، يجب عليك تحديد "-" بشكل صريح
بالنسبة لاسم البرنامج .
باستخدام الطريقتين 2 و3، يبدأ Perl في تحليل ملف الإدخال من البداية، إلا إذا قمت بذلك
المحدد أ -x التبديل، وفي هذه الحالة يقوم بالبحث عن السطر الأول الذي يبدأ بـ "#!" و
يحتوي على كلمة "Perl"، ويبدأ هناك بدلاً من ذلك. وهذا مفيد لتشغيل
برنامج مضمن في رسالة أكبر. (في هذه الحالة ستشير إلى نهاية
البرنامج باستخدام الرمز المميز "__END__".)
ال "#!" يتم فحص الخط دائمًا بحثًا عن المفاتيح أثناء تحليل الخط. وهكذا إذا
أنت على جهاز يسمح بوسيطة واحدة فقط مع "#!" الخط، أو ما هو أسوأ من ذلك، لا
حتى التعرف على "#!" الخط، لا يزال بإمكانك الحصول على سلوك تبديل ثابت بغض النظر عن ذلك
كيف تم استدعاء بيرل، حتى لو -x تم استخدامه للعثور على بداية البرنامج.
نظرًا لأن بعض أنظمة التشغيل تاريخيًا قامت بإيقاف تفسير kernel بصمت
ال "#!" بعد 32 حرفًا، قد يتم تمرير بعض المفاتيح في سطر الأوامر، و
البعض قد لا؛ يمكنك حتى الحصول على "-" بدون الحرف الخاص بها، إذا لم تكن حذرًا. أنت
ربما ترغب في التأكد من سقوط جميع مفاتيح التبديل الخاصة بك قبل ذلك أو بعده
حدود 32 حرفًا. لا تهتم معظم المحولات فعليًا إذا تمت معالجتها
بشكل متكرر، ولكن الحصول على "-" بدلاً من التبديل الكامل قد يتسبب في قيام Perl بمحاولة القيام بذلك
تنفيذ الإدخال القياسي بدلا من البرنامج الخاص بك. وجزئية -I يمكن أن يسبب التبديل أيضًا
نتائج غريبة.
تهتم بعض المفاتيح إذا تمت معالجتها مرتين، على سبيل المثال مجموعات من -l -0.
إما أن تضع كافة المفاتيح بعد حد 32 حرفًا (إن أمكن)، أو تستبدلها
استخدام -0الأرقام بواسطة "BEGIN{ $/ = "\0digits"; }".
تحليل "#!" تبدأ المفاتيح أينما تم ذكر كلمة "Perl" في السطر. ال
يتم تجاهل التسلسلات "-*" و"-" على وجه التحديد حتى تتمكن من ذلك، إذا كنت كذلك
يميل، ويقول
#!/ بن / ش
#! -*-بيرل-*-
eval 'exec Perl -x -wS $0 ${1+"$@"}'
إذا 0؛
للسماح لبيرل برؤية -p التبديل.
خدعة مماثلة تنطوي على الحياة الفطرية البرنامج إذا كان لديك.
#!/ البيرة / بن / إنف بيرل
تستخدم الأمثلة أعلاه مسارًا نسبيًا لمترجم Perl، للحصول على أي إصدار
هو الأول في مسار المستخدم. إذا كنت تريد إصدارًا محددًا من Perl، على سبيل المثال، perl5.14.1، فأنت
يجب أن يضع ذلك مباشرة في "#!" مسار الخط.
إذا كان "#!" السطر لا يحتوي على كلمة "Perl" ولا على كلمة "indir" البرنامج المسمى
بعد "#!" يتم تنفيذه بدلاً من مترجم Perl. وهذا غريب بعض الشيء، ولكن
إنه يساعد الأشخاص الذين يستخدمون الأجهزة التي لا تفعل "#!"، لأنهم يستطيعون إخبار البرنامج بأن
شل هو / البيرة / بن / بيرل، وسيقوم Perl بعد ذلك بإرسال البرنامج إلى المترجم الصحيح
بالنسبة لهم.
بعد تحديد موقع البرنامج الخاص بك، يقوم Perl بتجميع البرنامج بأكمله إلى نموذج داخلي. لو
هناك أية أخطاء في الترجمة، ولم تتم محاولة تنفيذ البرنامج. (هذا هو
على عكس نص الصدفة النموذجي، الذي قد يتم تشغيله جزئيًا قبل العثور على بناء الجملة
خطأ.)
إذا كان البرنامج صحيحًا من الناحية النحوية، فسيتم تنفيذه. إذا كان البرنامج يعمل خارج النهاية
دون ضرب خروج() or يموت () عامل ضمني خروج(0) تقدم للإشارة
اكتمال موفق.
#! نقلا عن on غير يونكس نظم
يونكس "#!" يمكن محاكاة التقنية على أنظمة أخرى:
OS / 2
وضع
extproc perl -S-your_switches
كالسطر الأول في الملف "*.cmd" (-S بسبب وجود خطأ في معالجة "extproc" الخاصة بـ cmd.exe).
MS-DOS
قم بإنشاء ملف دفعي لتشغيل برنامجك، وقم بتدوينه في "ALTERNATE_SHEBANG" (راجع
جرعة الملف في التوزيع المصدر لمزيد من المعلومات).
Win95/NT
سيتم تعديل تثبيت Win95/NT، عند استخدام مثبت ActiveState لـ Perl
السجل لربط .PL التمديد مع مترجم بيرل. إذا قمت بتثبيت
Perl بوسائل أخرى (بما في ذلك البناء من المصادر)، قد تضطر إلى تعديل ملف
سجل نفسك. لاحظ أن هذا يعني أنه لم يعد بإمكانك معرفة الفرق بين
برنامج بيرل قابل للتنفيذ وملف مكتبة بيرل.
وضع VMS
$ perl -mysw 'f$env("procedure")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'!
$exit++ + ++$status != 0 و $exit = $status = undef;
في الجزء العلوي من البرنامج الخاص بك، حيث -mysw هي أي مفاتيح سطر الأوامر التي تريد تمريرها
إلى بيرل. يمكنك الآن استدعاء البرنامج مباشرة، بقول "Perl Program"، أو كملف
إجراء DCL، بقول @program (أو ضمنيًا عبر مسار DCL$ بمجرد استخدام الاسم
من البرنامج).
هذه التعويذة صعبة بعض الشيء لتتذكرها، لكن لغة Perl ستعرضها لك إذا كنت تريد ذلك
قل "بيرل "-V:startperl"".
لدى مترجمي الأوامر في الأنظمة غير التابعة لنظام Unix أفكار مختلفة عن الاقتباس عن نظام Unix
اصداف. ستحتاج إلى معرفة الأحرف الخاصة في مترجم الأوامر ("*"، "\"
و """ شائعة) وكيفية حماية المسافات البيضاء وهذه الأحرف لتشغيل الخطوط المفردة
(انظر -e أدناه).
في بعض الأنظمة، قد تضطر إلى تغيير علامات الاقتباس المفردة إلى علامات الاقتباس المزدوجة، وهو أمر يجب عليك القيام به ليس
قم به على أنظمة Unix أو Plan 9. قد يتعين عليك أيضًا تغيير % واحد إلى %%.
فمثلا:
#يونيكس
perl -e 'print "Hello world \ n" "
#MS-DOS، الخ.
perl -e "print \" Hello world \ n \ ""
# نظام مراقبة الفيديو
perl -e "print" "Hello world \ n" ""
المشكلة هي أن أيًا من هذا لا يمكن الاعتماد عليه: فهو يعتمد على الأمر وهو كذلك تمامًا
ممكن لا يعمل. لو 4 دوس لو كانت قذيفة الأوامر، فمن المحتمل أن يعمل هذا بشكل أفضل:
perl -e "طباعة "مرحبًا بالعالم \ n ""
CMD.EXE في نظام التشغيل Windows NT تراجعت الكثير من وظائف Unix القياسية عندما لم يكن هناك أحد
تبحث، ولكن فقط حاول العثور على وثائق لقواعد الاقتباس الخاصة بها.
لا يوجد حل عام لكل هذا. إنها مجرد فوضى.
الموقع of بيرل
قد يبدو الأمر واضحًا، لكن لغة Perl تكون مفيدة فقط عندما يتمكن المستخدمون من العثور عليها بسهولة. متى
ممكن، انه جيد لكليهما / البيرة / بن / بيرل / usr / local / bin / perl لتكون روابط رمزية ل
الثنائي الفعلي. إذا لم يكن من الممكن القيام بذلك، فنحن نشجع مسؤولي النظام بشدة على القيام بذلك
ضع (ارتباطات رمزية إلى) Perl والأدوات المساعدة المصاحبة له في دليل يتم العثور عليه عادةً
على طول المسار الخاص بالمستخدم، أو في مكان آخر واضح ومريح.
في هذه الوثائق، "#!/ البيرة / بن / بيرل"في السطر الأول من البرنامج سوف يقف
لأي طريقة تعمل على نظامك. يُنصح باستخدام مسار محدد إذا كنت
يهتمون بإصدار معين.
#!/usr/local/bin/perl5.14
أو إذا كنت تريد فقط تشغيل الإصدار على الأقل، ضع عبارة مثل هذه في الأعلى
من برنامجك:
استخدم 5.014 ؛
أمر سويتشات
كما هو الحال مع كافة الأوامر القياسية، قد يتم تجميع رمز التبديل المكون من حرف واحد مع الملف
التبديل التالي، إن وجد.
#!/ البيرة / بن / بيرل -spi.orig # مثل -s -p -i.orig
يشير "--" إلى نهاية الخيارات ويعطل معالجة الخيارات الإضافية. أي الحجج
بعد "--" يتم التعامل معها كأسماء ملفات ووسائط.
تتضمن المفاتيح ما يلي:
-0[ثماني / سداسي عشري]
يحدد فاصل سجل الإدخال ($/) كرقم ثماني أو سداسي عشري. لو
لا توجد أرقام، الحرف الفارغ هو الفاصل. قد تسبق رموز التبديل الأخرى
أو اتبع الأرقام. على سبيل المثال، إذا كان لديك نسخة من جد والتي يمكن طباعتها
أسماء الملفات التي تم إنهاؤها بالحرف الفارغ، يمكنك قول ما يلي:
يجد . -الاسم '*.orig' -print0 | إلغاء ربط بيرل -n0e
ستؤدي القيمة الخاصة 00 إلى قيام Perl بإلتهام الملفات في وضع الفقرة. اي قيمة
0400 أو أعلى سوف يتسبب في قيام Perl بإلتهام الملفات بالكامل، ولكن حسب التقليد فإن القيمة 0777
هو الذي يستخدم عادة لهذا الغرض.
يمكنك أيضًا تحديد الحرف الفاصل باستخدام التدوين السداسي العشري: -0xههههههه...,
أين ال "H" هي أرقام سداسية عشرية صالحة. على عكس الشكل الثماني، قد يكون هذا الشكل
يستخدم لتحديد أي حرف Unicode، حتى تلك التي تتجاوز 0xFF. لذلك إذا كنت في الحقيقة تريد
فاصل سجل 0777، حدده كـ -0x1FF. (وهذا يعني أنه لا يمكنك استخدام
هيه -x خيار باسم دليل يتكون من أرقام ست عشرية، أو Perl
سوف تعتقد أنك حددت رقمًا سداسيًا لـ -0.)
-a يقوم بتشغيل وضع الانقسام التلقائي عند استخدامه مع -n or -p. أمر تقسيم ضمني إلى
يتم تنفيذ المصفوفة @F كأول شيء داخل الحلقة الضمنية التي يتم إنتاجها بواسطة -n
or -p.
بيرل -ane 'print pop(@F), "\n";'
ما يعادل
بينما (<>) {
@F = انقسام(' ');
طباعة البوب(@F), "\n";
}
يمكن تحديد محدد بديل باستخدام -F.
-a مجموعات ضمنية -n.
-C [الرقم / القائمة]
إنّ -C تتحكم العلامة في بعض ميزات Perl Unicode.
اعتبارا من 5.8.1 ، و -C يمكن أن يتبعها إما رقم أو قائمة من أحرف الاختيار.
الحروف وقيمها الرقمية وتأثيراتها هي كما يلي؛ سرد الحروف هو
يساوي جمع الأرقام.
من المفترض أن يكون I 1 STDIN في UTF-8
سيكون O 2 STDOUT بترميز UTF-8
سيكون E 4 STDERR في UTF-8
س 7 أنا + أو + ه
i8 UTF-8 هي طبقة PerlIO الافتراضية لتدفقات الإدخال
o 16 UTF-8 هي طبقة PerlIO الافتراضية لتدفقات الإخراج
د 24 ط + س
A32 من المتوقع أن تكون عناصر @ARGV عبارة عن سلاسل مشفرة
في UTF-8
L 64 عادةً ما تكون "IOEioA" غير مشروطة، مما يجعل L
لهم مشروطة بمتغيرات البيئة المحلية
(LC_ALL، LC_CTYPE، وLANG، بالترتيب
تناقص الأسبقية) - إذا كانت المتغيرات تشير إلى ذلك
UTF-8، ثم يصبح "IOEioA" المحدد ساري المفعول
256 اضبط ${^UTF8CACHE} على -1 لتشغيل التخزين المؤقت UTF-8
التعليمات البرمجية في وضع التصحيح.
على سبيل المثال، -COE -6 سيتم تشغيل كل من UTF-8-ness على كل من STDOUT وSTDERR.
تكرار الحروف هو مجرد تكرار وليس تراكمًا ولا تبديلًا.
خيارات "io" تعني أن أي خيارات لاحقة افتح() (أو عمليات الإدخال/الإخراج المماثلة) في
نطاق الملف الحالي سيكون له طبقة PerlIO ":utf8" المطبقة ضمنيًا عليهم، في
بمعنى آخر، يتم توقع UTF-8 من أي تدفق إدخال، ويتم إنتاج UTF-8 إلى أي تدفق
تيار الإخراج. هذا هو الإعداد الافتراضي فقط، مع وجود طبقات واضحة فيه افتح() ومع
binmode () يمكن للمرء التعامل مع التدفقات كالمعتاد.
-C بمفردها (لا يتبعها أي رقم أو قائمة خيارات)، أو السلسلة الفارغة "" لـ
متغير البيئة "PERL_UNICODE" له نفس تأثير -CSDL. في أخرى
الكلمات ومقابض الإدخال/الإخراج القياسية وطبقة "open()" الافتراضية هي UTF-8fied لكن
فقط إذا كانت متغيرات البيئة المحلية تشير إلى لغة UTF-8. هذا السلوك
يتبع ضمني (وإشكالية) سلوك UTF-8 لـ Perl 5.8.0. (راجع "UTF-8 رقم
افتراضي أطول ضمن لغات UTF-8" في perl581delta.)
يمكنك استخدام -0 (أو "0" لـ "PERL_UNICODE") لتعطيل كل ما سبق بشكل صريح
ميزات Unicode.
يعكس المتغير السحري للقراءة فقط "${^UNICODE}" القيمة الرقمية لهذا
جلسة. يتم تعيين هذا المتغير أثناء بدء تشغيل Perl ويصبح بعد ذلك للقراءة فقط. لو
تريد تأثيرات وقت التشغيل، استخدم الوسيط الثلاثي افتح() (انظر "فتح" في perlfunc)، وهما-
الأرجنتين binmode () (انظر "binmode" في perlfunc)، والبراغما "المفتوحة" (انظر مفتوح).
(في لغة Perls الأقدم من 5.8.1 -C كان رمز التبديل عبارة عن مفتاح Win32 فقط والذي مكن
استخدام Win32 APIs "استدعاء النظام الواسع" المدرك لليونيكود. وكانت هذه الميزة عمليا
غير مستخدم، وبالتالي تم "إعادة تدوير" مفتاح سطر الأوامر.)
ملحوظة: منذ بيرل 5.10.1، إذا كان -C يتم استخدام الخيار على "#!" الخط، يجب أن يكون
المحدد في سطر الأوامر أيضًا، نظرًا لأن التدفقات القياسية تم إعدادها بالفعل
عند هذه النقطة في تنفيذ مترجم بيرل. تستطيع ايضا استخذام binmode ()
لتعيين ترميز دفق الإدخال / الإخراج.
-c يؤدي إلى قيام Perl بالتحقق من بناء جملة البرنامج ثم الخروج دون تنفيذه.
في الواقع ، هو سوف تنفيذ وكتل "البدء" أو "التحقق" أو "التحقق" وأي "استخدام"
البيانات: تعتبر هذه أنها تحدث خارج تنفيذ البرنامج الخاص بك.
ومع ذلك، سيتم تخطي الكتل "INIT" و"END".
-d
-dt يقوم بتشغيل البرنامج ضمن مصحح أخطاء Perl. انظر بيرلديبوج. لو t محدد ، عليه
يشير إلى مصحح الأخطاء أنه سيتم استخدام سلاسل الرسائل في التعليمات البرمجية التي يتم تصحيحها.
-د:وزارة الدفاع[=بار،باز]
-دت:وزارة الدفاع[=بار،باز]
يقوم بتشغيل البرنامج تحت سيطرة وحدة التصحيح أو التنميط أو التتبع
تم التثبيت كـ "Devel::عصري". على سبيل المثال ، -د:دالبروفيسور ينفذ البرنامج باستخدام
ملف التعريف "Devel::DProf". كما هو الحال مع -M العلم، قد يتم تمرير الخيارات إلى
"ديفيل::عصري" الحزمة حيث سيتم استلامها وتفسيرها بواسطة
"ديفيل::وزارة الدفاع::استيراد" نمط. مرة أخرى، مثل -M، يستخدم --د:-معدل للإتصال
"ديفيل::وزارة الدفاع::إلغاء الاستيراد" بدلا من الاستيراد. يجب أن تكون قائمة الخيارات مفصولة بفواصل
اتبع حرف "=". لو t تم تحديده، فهو يشير إلى مصحح الأخطاء الذي يقوم بتشغيل الخيوط
سيتم استخدامه في الكود الذي يتم تصحيحه. انظر بيرلديبوج.
-Dحروف
-Dعدد
يحدد علامات التصحيح. لمشاهدة كيفية تنفيذ البرنامج الخاص بك، استخدم -ديتلس. (هذا يعمل
فقط إذا تم تجميع تصحيح الأخطاء في لغة Perl الخاصة بك.) هناك قيمة أخرى رائعة -دي إكس، التي
يسرد شجرة بناء الجملة المترجمة الخاصة بك. و -دكتور يعرض التعبيرات العادية المجمعة؛ ال
يتم شرح تنسيق الإخراج في perldebguts.
كبديل، حدد رقمًا بدلاً من قائمة الأحرف (على سبيل المثال، -د 14 is
أي ما يعادل -ديتلس):
1p الترميز والتحليل (باستخدام v، يعرض مكدس التحليل)
لقطات من المكدس لمدة ثانيتين (باستخدام v، يعرض جميع المكدسات)
4 لتر معالجة مكدس السياق (الحلقة).
8 طن تتبع التنفيذ
16 o أسلوب وقرار التحميل الزائد
32 ج سلسلة / التحويلات الرقمية
64 P طباعة معلومات الملف التعريفي وحالة إدخال الملف المصدر
128 م تخصيص الذاكرة وSV
256 و معالجة التنسيق
512 ص تحليل وتنفيذ التعبير العادي
1024 × تفريغ شجرة بناء الجملة
2048 ش فحص التلوث
4096 يو غير رسمي، اختراق المستخدم (مخصص للقطاع الخاص،
استخدام غير منشور)
8192 H تفريغ التجزئة - اغتصاب القيم ()
16384 X تخصيص المسودة
32768 د تنظيف
65536 تخصيص بلاطة S Op
131072 ت الترميز
262144 R قم بتضمين الأعداد المرجعية للمتغيرات المُلقاة (على سبيل المثال متى
باستخدام -Ds)
524288 J show s,t,P-debug (لا تقفز فوق) على أكواد التشغيل داخل
حزمة ديسيبل
1048576 v مطول: يستخدم مع الأعلام الأخرى
2097152 ج نسخ عند الكتابة
4194304 A يتم فحص الاتساق على الهياكل الداخلية
8388608 ف هادئ - حاليًا يمنع فقط "التنفيذ"
الرسالة
16777216 M تتبع دقة المطابقة الذكية
33554432 ب تفريغ تعريفات الروتين الفرعي، بما في ذلك الكتل الخاصة
مثل البدء
67108864 L تتبع المعلومات المتعلقة بالإعدادات المحلية؛ ما يحصل على الإخراج هو جدا
قابل للتغير
كل هذه الأعلام تتطلب -تصحيح الأخطاء عند تجميع الملف القابل للتنفيذ Perl (ولكن انظر
":opd" في Devel::Peek أو "وضع "التصحيح" في إعادة والذي قد يغير هذا). انظر
تثبيت ملف في توزيع مصدر بيرل لكيفية القيام بذلك. هذا العلم
يتم تعيينه تلقائيًا إذا قمت بتضمينه -g الخيار عندما يسألك "التكوين" عنه
أعلام المحسن/المصحح.
إذا كنت تحاول فقط الحصول على نسخة مطبوعة من كل سطر من كود Perl أثناء تنفيذه،
بالطريقة التي يوفرها "sh -x" لنصوص shell النصية، لا يمكنك استخدام لغة Perl -D التبديل.
بدلا من ذلك افعل هذا
# إذا كان لديك فائدة "env".
env PERLDB_OPTS="NonStop=1 AutoTrace=1 إطار=2" برنامج Perl -dS
# بناء جملة بورن
$ PERLDB_OPTS = "NonStop = 1 AutoTrace = إطار واحد = 1" برنامج Perl -dS
# بناء جملة CSH
% (setenv PERLDB_OPTS "NonStop=1 AutoTrace=1 إطار=2"; برنامج Perl -dS)
راجع perldebug للحصول على التفاصيل والاختلافات.
-e سطر الأوامر
يمكن استخدامها لإدخال سطر واحد من البرنامج. لو -e نظرًا لأن Perl لن يبحث عن ملف
اسم الملف في قائمة الوسيطة. عديد -e يمكن إعطاء الأوامر لبناء أ
نص متعدد الأسطر. تأكد من استخدام الفواصل المنقوطة في المكان الذي تستخدمه في البرنامج العادي.
-E سطر الأوامر
يتصرف مثل -e، إلا أنه يمكّن ضمنيًا جميع الميزات الاختيارية (في ملف
وحدة التجميع الرئيسية). انظر الميزة.
-f تعطيل التنفيذ $التكوين{sitelib}/sitecustomize.pl في البداية.
يمكن إنشاء لغة Perl بحيث تحاول التنفيذ بشكل افتراضي
$التكوين{sitelib}/sitecustomize.pl عند بدء التشغيل (في كتلة BEGIN). هذا هو الخطاف الذي
يسمح لمسؤول النظام بتخصيص كيفية تصرف Perl. ويمكن على سبيل المثال استخدامه ل
قم بإضافة إدخالات إلى مصفوفة @INC لجعل Perl يبحث عن الوحدات النمطية في المواقع غير القياسية.
يقوم Perl بالفعل بإدراج الكود التالي:
ابدأ {
افعل {محلي $!; -f "$Config{sitelib}/sitecustomize.pl"; }
&& افعل "$Config{sitelib}/sitecustomize.pl";
}
نظرًا لأنه "فعل" فعلي (وليس "يتطلب")، sitecustomize.pl لا يحتاج إلى العودة
قيمة حقيقية. يتم تشغيل التعليمات البرمجية في الحزمة "الرئيسية"، في نطاقها المعجمي الخاص. لكن،
إذا مات البرنامج النصي، فلن يتم تعيين $@.
يتم تحديد قيمة $Config{sitelib} أيضًا في كود C ولا يمكن قراءتها منها
"Config.pm"، الذي لم يتم تحميله.
يتم تنفيذ الكود جدا مبكر. على سبيل المثال، ستظهر أية تغييرات تم إجراؤها على @INC
في إخراج "Perl -V". وبطبيعة الحال، سيتم تنفيذ الكتل "END" أيضًا بشكل كبير
متأخر.
يمكنك تحديد وقت التشغيل ما إذا كانت هذه الإمكانية قد تم تجميعها في لغة Perl الخاصة بك
تحقق من قيمة $Config{usesitecustomize}.
-Fالنمط
يحدد النمط الذي سيتم تقسيمه عليه -a. قد يكون النمط محاطًا بـ "//"، ""،
أو ''، وإلا فسيتم وضعها بين علامات اقتباس مفردة. لا يمكنك استخدام مسافة بيضاء حرفية
النمط.
-F يحدد ضمنا على حد سواء -a -n.
-h يطبع ملخصًا للخيارات.
-i[تمديد]
يحدد أن الملفات التي تتم معالجتها بواسطة البنية "<>" سيتم تحريرها في مكانها. هو - هي
يتم ذلك عن طريق إعادة تسمية ملف الإدخال، وفتح ملف الإخراج بالاسم الأصلي،
واختيار ملف الإخراج هذا باعتباره الملف الافتراضي لـ طباعة() صياغات. تمديد،
إذا تم توفيره، فسيتم استخدامه لتعديل اسم الملف القديم لعمل نسخة احتياطية،
باتباع هذه القواعد:
إذا لم يتم توفير أي امتداد، وكان نظامك يدعمه، فالأصل هو النسخة الأصلية ملف يتم الاحتفاظ بها
مفتوح بدون اسم أثناء إعادة توجيه الإخراج إلى ملف جديد بالملف الأصلي
اسم الملف. عندما يخرج بيرل، بشكل نظيف أم لا، الأصلي ملف غير مرتبط.
إذا كان الامتداد لا يحتوي على "*"، فسيتم إلحاقه بنهاية التيار
اسم الملف كلاحقة. إذا كان الامتداد يحتوي على حرف "*" واحد أو أكثر، إذن
يتم استبدال كل "*" باسم الملف الحالي. من حيث لغة بيرل، يمكنك التفكير في
هذا كما:
($backup = $extension) =~ s/\*/$file_name/g;
يتيح لك هذا إضافة بادئة إلى ملف النسخة الاحتياطية، بدلاً من (أو بالإضافة إلى) أ
لاحقة:
$ perl -pi'orig_*' -e 's/bar/baz/' fileA # نسخة احتياطية ل
# 'الملف الأصلي أ'
أو حتى لوضع نسخ احتياطية من الملفات الأصلية في دليل آخر (شريطة
الدليل موجود بالفعل):
$ Perl -pi'old/*.orig' -e 's/bar/baz/' fileA # نسخة احتياطية إلى
# "قديم/ملف A.orig"
هذه المجموعات من الخطوط المفردة متكافئة:
$ perl -pi -e 's/bar/baz/' fileA # الكتابة فوق الملف الحالي
$ perl -pi'*' -e 's/bar/baz/' fileA # الكتابة فوق الملف الحالي
$ perl -pi'.orig' -e 's/bar/baz/' fileA # نسخة احتياطية إلى 'fileA.orig'
$ perl -pi'*.orig' -e 's/bar/baz/' fileA # نسخة احتياطية إلى 'fileA.orig'
من القشرة قائلا
$ بيرل -p -i.orig -e "s/foo/bar/; ..."
هو نفس استخدام البرنامج:
#!/ البيرة / بن / بيرل -pi.orig
s/foo/bar/;
وهو ما يعادل
#!/ البيرة / بن / بيرل
$extension = '.orig';
الخط: بينما (<>) {
إذا ($ARGV ني $oldargv) {
إذا ($امتداد !~ /\*/) {
النسخ الاحتياطي $ = $ARGV . $امتداد؛
}
آخر {
($backup = $extension) =~ s/\*/$ARGV/g;
}
إعادة تسمية($ARGV, $backup);
open(ARGVOUT, ">$ARGV");
حدد(أرجفوت);
$oldargv = $ARGV;
}
s/foo/bar/;
}
يكمل {
مطبعة؛ # هذا يطبع إلى اسم الملف الأصلي
}
حدد(STDOUT);
ما عدا أن -i لا يحتاج النموذج إلى مقارنة $ARGV بـ $oldargv لمعرفة متى
لقد تغير اسم الملف. ومع ذلك، فهو يستخدم ARGVOUT لمقبض الملف المحدد.
لاحظ أنه تتم استعادة STDOUT كمقبض ملف الإخراج الافتراضي بعد الحلقة.
كما هو موضح أعلاه، يقوم Perl بإنشاء ملف النسخ الاحتياطي سواء كان هناك أي مخرجات بالفعل أم لا
تغير. هذه مجرد طريقة رائعة لنسخ الملفات:
$ بيرل -p -i'/some/file/path/*' -e 1 file1 file2 file3...
or
$ Perl -p -i'.orig' -e 1 file1 file2 file3...
يمكنك استخدام "eof" بدون أقواس لتحديد نهاية كل ملف إدخال، في حالة حدوث ذلك
تريد إلحاقه بكل ملف، أو إعادة تعيين ترقيم الأسطر (انظر المثال في "eof" في
بيرلفونك).
إذا لم يتمكن Perl، بالنسبة لملف معين، من إنشاء ملف النسخ الاحتياطي كما هو محدد في ملف
ملحق فإنه سوف يتخطى هذا الملف ويستمر في الملف التالي (إذا كان
موجود).
لمناقشة المشكلات المحيطة بأذونات الملفات و -i، راجع "لماذا يفعل Perl
اسمحوا لي أن حذف الملفات للقراءة فقط؟ لماذا -i clobber الملفات المحمية؟ أليس هذا أ
خطأ في بيرل؟" في perlfaq5.
لا يمكنك استخدام -i لإنشاء أدلة أو إزالة الامتدادات من الملفات.
لا يقوم Perl بتوسيع "~" في أسماء الملفات، وهو أمر جيد، حيث يستخدمه بعض الأشخاص
ملفات النسخ الاحتياطي الخاصة بهم:
$ بيرل -pi~ -e 's/foo/bar/' file1 file2 file3...
لاحظ ذلك بسبب -i إعادة تسمية أو حذف الملف الأصلي قبل إنشاء ملف جديد
التي تحمل نفس الاسم، لن يتم الاحتفاظ بالروابط الصلبة واللينة ذات النمط Unix.
وأخيرا، -i لا يعيق التبديل التنفيذ في حالة عدم وجود ملفات على الملف
سطر الأوامر. في هذه الحالة، لا يتم عمل نسخة احتياطية (لا يمكن بالطبع نسخ الملف الأصلي)
يتم تحديدها) وتتم معالجة العائدات من STDIN إلى STDOUT كما هو متوقع.
-Iدليل
الدلائل المحددة بواسطة -I يتم إضافتها مسبقًا إلى مسار البحث عن الوحدات النمطية (@INC).
-l[ثماني]
تمكن المعالجة التلقائية لإنهاء الخط. له تأثيران منفصلان. أولا، ذلك
يقضم $/ تلقائيًا (فاصل سجل الإدخال) عند استخدامه مع -n or -p.
ثانيًا، يقوم بتعيين "$\" (فاصل سجل الإخراج) للحصول على القيمة ثماني so
أن أي عبارات طباعة ستتم إضافة هذا الفاصل مرة أخرى. لو ثماني is
تم حذفه، يضبط "$\" على القيمة الحالية لـ $/. على سبيل المثال، لتقليص الخطوط إلى 80
الأعمدة:
بيرل -lpe 'substr($_, 80) = ""'
لاحظ أن التعيين "$\ = $/" يتم إجراؤه عند معالجة المفتاح، لذا فإن الإدخال
يمكن أن يكون فاصل السجل مختلفًا عن فاصل سجل الإخراج إذا كان -l تحول
يليه ملف -0 التبديل:
gnufind / -print0 | بيرل -ln0e 'اطبع "تم العثور على $_" إذا -p'
يؤدي هذا إلى تعيين "$\" على السطر الجديد ثم تعيين $/ على الحرف الفارغ.
-m[-]وحدة
-M[-]وحدة
-M[-]'وحدة ... "
-[مم][-]الوحدة النمطية=arg[,arg]...
-mوحدة ينفذ "استخدام" وحدة "();" قبل تنفيذ البرنامج الخاص بك.
-Mوحدة ينفذ "استخدام" وحدة "؛" قبل تنفيذ البرنامج الخاص بك. يمكنك استخدام علامات الاقتباس
لإضافة رمز إضافي بعد اسم الوحدة، على سبيل المثال، '-MMODULE كيو دبليو (foo حاجِز)'.
إذا كان الحرف الأول بعد -M or -m هو اندفاعة (-) ثم يتم استبدال "الاستخدام".
مع عدم وجود'.
القليل من السكر النحوي المدمج يعني أنه يمكنك أن تقول أيضًا -mMODULE=فو، بار or
-MMODULE=فو، بار كاختصار لـ '-مMODULE كيو دبليو (foo حاجِز)'. وهذا يتجنب الحاجة إلى
استخدم علامات الاقتباس عند استيراد الرموز. الكود الفعلي الذي تم إنشاؤه بواسطة -MMODULE=فو، بار is
"استخدام تقسيم الوحدة (/,/,q{foo,bar})". لاحظ أن النموذج "=" يزيل التمييز
ما بين -m -M. هذا هو، -mMODULE=فو، بار بالضبط مثل -MMODULE=فو، بار.
ونتيجة لهذا هو أن -MMODULE= رقم لا يقوم أبدًا بفحص الإصدار، إلا إذا
"الوحدة::استيراد ()" تم إعداد نفسه لإجراء فحص الإصدار، وهو ما يمكن أن يحدث لـ
مثال إذا MODULE يرث من المصدر.
-n يجعل Perl يفترض الحلقة التالية حول برنامجك، مما يجعله يتكرر
عبر وسيطات اسم الملف تحب إلى حد ما عطش -n or AWK:
خط:
بينما (<>) {
... # برنامجك يذهب هنا
}
لاحظ أنه لا تتم طباعة الأسطر بشكل افتراضي. راجع "-p" لطباعة الخطوط. لو
لا يمكن فتح ملف مسمى بواسطة وسيطة لسبب ما، يحذرك Perl من ذلك
وينتقل إلى الملف التالي.
لاحظ أيضًا أن "<>" يمرر وسيطات سطر الأوامر إلى "فتح" في perlfunc، والتي
لا يفسرها بالضرورة كأسماء ملفات. انظر perlop للحصول على الأمان المحتمل
آثار.
إليك طريقة فعالة لحذف كافة الملفات التي لم يتم تعديلها على الأقل
أسبوع:
يجد . -mtime +7 -طباعة | إلغاء ربط بيرل -nle
وهذا أسرع من استخدام إكسيك تبديل جد لأنه ليس عليك أن تبدأ
عملية على كل اسم ملف تم العثور عليه. إنها تعاني من خطأ سوء التعامل مع الخطوط الجديدة
في أسماء المسارات، والتي يمكنك إصلاحها إذا اتبعت المثال أدناه -0.
يمكن استخدام الكتل "BEGIN" و"END" لالتقاط التحكم قبل أو بعد الضمني
حلقة البرنامج، كما هو الحال في AWK.
-p يجعل Perl يفترض الحلقة التالية حول برنامجك، مما يجعله يتكرر
عبر وسيطات اسم الملف تحب إلى حد ما عطش:
خط:
بينما (<>) {
... # برنامجك يذهب هنا
} يكمل {
طباعة أو يموت "-p الوجهة: $!\n";
}
إذا تعذر فتح ملف مسمى بواسطة وسيطة لسبب ما، فإن لغة Perl تحذرك بشأن ذلك
عليه، وينتقل إلى الملف التالي. لاحظ أنه تتم طباعة الأسطر تلقائيًا.
يتم التعامل مع الخطأ الذي يحدث أثناء الطباعة على أنه خطأ فادح. لمنع الطباعة استخدم
-n تحول. أ -p يتجاوز أ -n التبديل.
يمكن استخدام الكتل "BEGIN" و"END" لالتقاط التحكم قبل أو بعد الضمني
حلقة، كما هو الحال في AWK.
-s يتيح تحليل التبديل البدائي للمفاتيح الموجودة في سطر الأوامر بعد البرنامج
name ولكن قبل أي وسيطة لاسم الملف (أو قبل وسيطة --). أي التبديل
تم العثور عليه هناك وتمت إزالته منARGV وتعيين المتغير المقابل في ملف Perl
برنامج. يطبع البرنامج التالي "1" إذا تم استدعاء البرنامج باستخدام ملف -xyz
التبديل، و"abc" إذا تم استدعاؤه مع -xyz=abc.
#!/ البيرة / بن / بيرل -s
إذا ($xyz) {اطبع "$xyz\n" }
هل لاحظ أن التبديل مثل --مساعدة ينشئ المتغير "${-help}"، وهو ليس كذلك
متوافق مع "استخدام" المراجع "" الصارمة". أيضًا، عند استخدام هذا الخيار على برنامج نصي به
عند تمكين التحذيرات، قد تحصل على الكثير من التحذيرات الزائفة "تُستخدم مرة واحدة فقط".
-S يجعل Perl يستخدم متغير بيئة PATH للبحث عن البرنامج ما لم يكن
اسم البرنامج يحتوي على فواصل المسار.
في بعض الأنظمة الأساسية، يؤدي هذا أيضًا إلى قيام Perl بإلحاق لاحقات باسم الملف while
البحث عنه. على سبيل المثال، في الأنظمة الأساسية Win32، اللاحقة ".bat" و".cmd".
يتم إلحاقها في حالة فشل البحث عن الاسم الأصلي، وإذا لم يحدث ذلك
تنتهي بالفعل في واحدة من تلك اللواحق. إذا تم تجميع لغة Perl الخاصة بك باستخدام "DEBUGGING"
قيد التشغيل باستخدام -موانئ دبي يُظهر التبديل إلى Perl كيفية تقدم البحث.
عادةً ما يتم استخدام هذا لمحاكاة "#!" بدء التشغيل على الأنظمة الأساسية التي لا تدعم "#!".
كما أنه مناسب أيضًا عند تصحيح أخطاء البرنامج النصي الذي يستخدم "#!"، وبالتالي فهو طبيعي
تم العثور عليه بواسطة آلية البحث $PATH الخاصة بالصدفة.
يعمل هذا المثال على العديد من الأنظمة الأساسية التي تحتوي على غلاف متوافق مع Bourne Shell:
#!/ البيرة / بن / بيرل
إيفال إكسيك / البيرة / بن / بيرل -wS $0 ${1+"$@"}'
إذا $running_under_some_shell؛
يتجاهل النظام السطر الأول ويقوم بتغذية البرنامج إليه / بن / ش، الذي يمضي إلى
حاول تنفيذ برنامج Perl كبرنامج نصي Shell. الصدفة تنفذ الثانية
سطر كأمر شل عادي، وبالتالي يبدأ تشغيل مترجم بيرل. على بعض
لا تحتوي الأنظمة $0 دائمًا على اسم المسار الكامل، لذا فإن ملف -S يخبر بيرل بالبحث
للبرنامج إذا لزم الأمر. بعد أن يحدد بيرل موقع البرنامج، فإنه يقوم بتوزيع الأسطر
ويتجاهلها لأن المتغير $running_under_some_shell ليس صحيحًا أبدًا. لو
سيتم ترجمة البرنامج بواسطة csh، وسوف تحتاج إلى استبدال "${1+"$@"}" بـ $*،
على الرغم من أن هذا لا يفهم المسافات المضمنة (وما إلى ذلك) في قائمة الوسائط.
لبدء sh بدلا من مستشفى الدعم القتالي، قد تضطر بعض الأنظمة إلى استبدال "#!" خط مع أ
سطر يحتوي فقط على نقطتين، والذي سيتم تجاهله بأدب بواسطة Perl. أنظمة أخرى
لا أستطيع التحكم في ذلك، وتحتاج إلى بنية مخادعة تمامًا ستعمل تحت أي منها
مستشفى الدعم القتالي, shأو Perl، مثل ما يلي:
eval '(exit $?0)' && eval 'exec Perl -wS $0 ${1+"$@"}'
& تقييم التنفيذ التنفيذي / البيرة / بن / بيرل -wS $0 $argv:q'
إذا $running_under_some_shell؛
إذا كان اسم الملف المقدم يحتوي على فواصل الدليل (وبالتالي فهو مطلق أو
اسم المسار النسبي)، وإذا لم يتم العثور على هذا الملف، فالأنظمة الأساسية التي تقوم بإلحاق الملف
ستفعل الملحقات ذلك وتحاول البحث عن الملف الذي تمت إضافة تلك الملحقات إليه، واحد
بواحد.
في الأنظمة الأساسية المشابهة لـ DOS، إذا كان البرنامج لا يحتوي على فواصل دليل، فسوف يفعل ذلك
يتم البحث عنه أولاً في الدليل الحالي قبل البحث عنه في PATH.
على منصات يونكس، سيتم البحث عن البرنامج بشكل صارم على PATH.
-t اعجاب -T، ولكن عمليات التحقق من العيوب ستصدر تحذيرات بدلاً من الأخطاء الفادحة. هؤلاء
يمكن الآن التحكم في التحذيرات بشكل طبيعي من خلال "عدم وجود تحذيرات qw(taint)".
ملحوظة: هذه is ليس a استبدل لـ "-ت"! من المفترض أن يتم استخدام هذا فقط مؤقتا
مساعدات التنمية مع تأمين الكود القديم: لرمز الإنتاج الحقيقي وللجديد
كود آمن مكتوب من الصفر، استخدم دائمًا الكود الحقيقي -T.
-T يقوم بتشغيل "التلوث" حتى تتمكن من اختبارها. عادة يتم إجراء هذه الفحوصات فقط عندما
تشغيل setuid أو setgid. إنها فكرة جيدة أن تقوم بتشغيلها بشكل صريح للبرامج
التي تعمل نيابة عن شخص آخر قد لا تثق به بالضرورة، مثل CGI
البرامج أو أي خوادم إنترنت قد تكتبها بلغة Perl. راجع بيرلسيك للحصول على التفاصيل.
لأسباب أمنية، يجب أن يرى بيرل هذا الخيار في وقت مبكر جدًا؛ عادة هذا
يعني أنه يجب أن يظهر مبكرًا في سطر الأوامر أو في "#!" خط للأنظمة التي
دعم هذا البناء.
-u يؤدي رمز التبديل هذا إلى قيام Perl بتفريغ النواة بعد ترجمة البرنامج الخاص بك. يمكنك بعد ذلك الدخول
تأخذ النظرية هذا التفريغ الأساسي وتحوله إلى ملف قابل للتنفيذ باستخدام ملف تفريغ
البرنامج (غير مرفق). يؤدي هذا إلى تسريع بدء التشغيل على حساب بعض مساحة القرص (والتي
يمكنك التصغير عن طريق تجريد الملف القابل للتنفيذ). (لا يزال هناك "hello World" قابل للتنفيذ
يصل إلى حوالي 200 ألف على جهازي.) إذا كنت تريد تنفيذ جزء من ملفك
البرنامج قبل الإغراق، استخدم أحمق() المشغل بدلاً من ذلك. ملحوظة: توفر
تفريغ خاص بالمنصة وقد لا يكون متاحًا لمنفذ معين من Perl.
-U يسمح لـ Perl بالقيام بعمليات غير آمنة. حاليا العمليات الوحيدة "غير الآمنة" هي
محاولة إلغاء ربط الدلائل أثناء التشغيل كمستخدم متميز وتشغيل setuid
تحولت البرامج ذات عمليات التحقق من العيوب القاتلة إلى تحذيرات. لاحظ أن التحذيرات يجب أن تكون
تمكين جنبا إلى جنب مع هذا الخيار في الواقع توليد تحذيرات التحقق من التلوث.
-v يطبع الإصدار ومستوى التصحيح الخاص بملف Perl القابل للتنفيذ.
-V يطبع ملخصًا لقيم تكوين Perl الرئيسية والقيم الحالية لـINC.
-الخامس:configvar
يطبع إلى STDOUT قيمة متغير (متغيرات) التكوين المسماة، بمضاعفاتها
عندما الخاص بك "التكوين" تبدو الوسيطة وكأنها تعبير عادي (لا يحتوي على أحرف). على سبيل المثال:
$ بيرل -V:libc
libc='/lib/libc-2.2.4.so';
$ بيرل -V:lib.
libs='-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc';
libc='/lib/libc-2.2.4.so';
$ بيرل -V:lib.*
ليبث='/ البيرة / المحلية / ليب / ليب / البيرة / ليب';
libs='-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc';
lib_ext='.a';
libc='/lib/libc-2.2.4.so';
libperl='libberl.a';
....
بالإضافة إلى ذلك، يمكن استخدام النقطتين الإضافيتين للتحكم في التنسيق. القولون زائدة
يمنع تغذية الأسطر والفاصل "؛"، مما يسمح لك بتضمين الاستعلامات في الصدفة
الأوامر. (تذكير: فاصل المسار ): ".)
$ echo "compression-vars: " `Perl -V:z.*: ` " موجودون هنا!"
ضغط-فارس: zcat='' zip='zip' هنا!
تقوم النقطتان البادئتان بإزالة الجزء "name =" من الاستجابة، مما يسمح لك بالتعيين إليه
الاسم الذي تحتاجه. (ذاكري: تسمية فارغة)
$ echo "goodvfork="`./perl -Ilib -V::usevfork`
goodvfork=false;
يمكن استخدام النقطتين البادئة والزائدة معًا إذا كنت بحاجة إلى معلمة موضعية
القيم دون الأسماء. لاحظ أنه في الحالة أدناه، فإن معلمات "PERL_API" هي
عاد بالترتيب الأبجدي.
$ echo Building_on `Perl -V::osname: -V::PERL_API_.*:` الآن
Building_on 'linux' '5' '1' '9' الآن
-w يطبع تحذيرات حول بنيات مشكوك فيها، مثل أسماء المتغيرات المذكورة مرة واحدة فقط
والمتغيرات العددية المستخدمة قبل تعيينها؛ إعادة تعريف الإجراءات الفرعية؛ ما يشير إلى
معالجات ملفات غير محددة؛ تم فتح معالجات الملفات للقراءة فقط التي تحاول كتابتها
على؛ القيم المستخدمة كرقم لا بحث مثل الأرقام؛ باستخدام مجموعة كما لو كان
كانت عددية؛ إذا كانت الإجراءات الفرعية الخاصة بك تتكرر بعمق أكثر من 100؛ وغيرها لا تعد ولا تحصى
الأشياء.
يعمل رمز التبديل هذا على تمكين المتغير $^W العام فقط؛ عادة، معجميا
يفضل استخدام "تحذيرات الاستخدام" ذات النطاق العملي. يمكنك تعطيل أو ترقية إلى قاتلة
تحذيرات محددة للأخطاء باستخدام خطافات "__WARN__"، كما هو موضح في perlvar و"warn"
في بيرفونك. انظر أيضًا بيرلدياج وبيرلتراب. مرفق تحذير دقيق الحبيبات
متاح أيضًا إذا كنت تريد التعامل مع فئات كاملة من التحذيرات؛ انظر التحذيرات.
-W تمكين جميع التحذيرات بغض النظر عن "لا توجد تحذيرات" أو $^W. انظر التحذيرات.
-X تعطيل جميع التحذيرات بغض النظر عن "استخدام التحذيرات" أو $^W. انظر التحذيرات.
-x
-xدليل
يخبر بيرل أن البرنامج مضمن في جزء أكبر من النص غير ذي الصلة، مثل
في رسالة بريدية. سيتم التخلص من البيانات المهملة الرائدة حتى السطر الأول
ابدا ب "#!" ويحتوي على السلسلة "بيرل". أي مفاتيح ذات معنى على ذلك
سيتم تطبيق الخط.
جميع الإشارات إلى أرقام الأسطر بواسطة البرنامج (التحذيرات، الأخطاء، ...) ستعامل
"#!" السطر كالسطر الأول. وبالتالي تحذير على السطر الثاني من البرنامج، وهو
في السطر رقم 100 من الملف سيتم الإبلاغ عنه على أنه السطر 2، وليس على أنه السطر 100. يمكن أن يكون هذا
يمكن تجاوزه باستخدام التوجيه "#line". (راجع "التعليقات القديمة البسيطة (ليس!)" في
بيرلسين)
إذا تم تحديد اسم دليل، فسيقوم Perl بالتبديل إلى هذا الدليل قبل التشغيل
البرنامج. ال -x يتحكم المفتاح فقط في التخلص من النفايات الرائدة. ال
يجب إنهاء البرنامج بـ "__END__" إذا كان هناك بيانات زائدة يجب تجاهلها؛
يمكن للبرنامج معالجة أي أو كل البيانات المهملة الزائدة عبر مقبض الملف "DATA".
اذا رغب.
يجب أن يظهر الدليل، إذا تم تحديده، مباشرة بعد الملف -x مع عدم وجود
مسافة بيضاء متداخلة.
البيئة
HOME يُستخدم إذا لم يكن لـ "chdir" أي وسيطة.
LOGDIR يُستخدم إذا لم يكن لـ "chdir" أي وسيطة ولم يتم تعيين HOME.
PATH يستخدم في تنفيذ العمليات الفرعية وفي العثور على البرنامج if -S .
PERL5LIB قائمة الدلائل التي يمكنك البحث فيها عن ملفات مكتبة Perl قبل البحث
في المكتبة القياسية والدليل الحالي. أي بنية محددة
والدلائل الخاصة بالإصدار، مثل الإصدار/الاسم الرئيسي/, إصدار/ أو
اللقب/ ضمن المواقع المحددة يتم تضمينها تلقائيًا إذا كانت
موجودة، مع إجراء هذا البحث في وقت بدء تشغيل المترجم. وبالإضافة إلى ذلك، أي
تتم إضافة الدلائل المطابقة للإدخالات في $Config{inc_version_list}.
(عادةً ما تكون هذه مخصصة لإصدارات Perl الأقدم المتوافقة المثبتة في
نفس شجرة الدليل.)
إذا لم يتم تعريف PERL5LIB، فسيتم استخدام PERLLIB. يتم فصل الدلائل (مثل
في PATH) بنقطتين على الأنظمة الأساسية Unixish وبواسطة فاصلة منقوطة على Windows (
يتم إعطاء فاصل المسار الصحيح بواسطة الأمر "Perl -V:path_sep").
عند تشغيل عمليات التحقق من الشوائب، إما لأن البرنامج كان يقوم بتشغيل setuid أو
setgid، أو -T or -t تم تحديد رمز التبديل، ولم يتم تحديد PERL5LIB أو PERLLIB
استشارته. يجب أن يقول البرنامج بدلاً من ذلك:
استخدم lib "/my/directory";
خيارات سطر الأوامر (المفاتيح) PERL5OPT. يتم التعامل مع المفاتيح في هذا المتغير كما لو
كانوا في كل سطر أوامر بيرل. فقط -[CDIMUdmtwW] هي مفاتيح
مسموح. عند تشغيل عمليات التحقق من الشوائب (إما بسبب تشغيل البرنامج
setuid أو setgid، أو لأن -T or -t تم استخدام التبديل)، وهذا المتغير هو
تم تجاهله. إذا كان PERL5OPT يبدأ بـ -T، سيتم تمكين التلوث واللاحقة
تم تجاهل الخيارات. إذا كان PERL5OPT يبدأ بـ -t، سيتم تمكين التلوث، أ
تمت إزالة النقطة القابلة للكتابة منINC، وتم تكريم الخيارات اللاحقة.
PERLIO قائمة مفصولة بمسافة (أو نقطتين) لطبقات PerlIO. إذا تم تصميم Perl للاستخدام
نظام PerlIO لـ IO (الافتراضي) تؤثر هذه الطبقات على IO الخاص بـ Perl.
من المعتاد أن تبدأ أسماء الطبقات بنقطتين (على سبيل المثال، ":perlio")
للتأكيد على تشابهها مع "السمات" المتغيرة. لكن الكود ذلك
يوزع سلاسل مواصفات الطبقة، والتي تُستخدم أيضًا لفك تشفير PERLIO
متغير البيئة، يعامل القولون كفاصل.
إن PERLIO غير المحددة أو الفارغة تعادل مجموعة الطبقات الافتراضية الخاصة بك
منصة؛ على سبيل المثال، ":unix:perlio" في الأنظمة المشابهة لـ Unix و":unix:crlf" في الأنظمة المشابهة
Windows والأنظمة الأخرى المشابهة لـ DOS.
تصبح القائمة هي القائمة الافتراضية لـ الكل بيرل آي أو. وبالتالي المدمج في فقط
يمكن أن تظهر الطبقات في هذه القائمة، كطبقات خارجية (مثل ":encoding()")
تحتاج إلى IO لتحميلها! راجع "pragma المفتوحة" للتعرف على كيفية إضافة ملفات خارجية
الترميزات كإعدادات افتراضية.
الطبقات التي من المنطقي تضمينها في متغير بيئة PERLIO هي
ملخصة لفترة وجيزة أدناه. لمزيد من التفاصيل راجع بيرليو.
:bytes طبقة زائفة تعمل على تحويل علامة ":utf8". خصم للطبقة أدناه.
من غير المرجح أن يكون مفيدًا بمفرده في بيئة PERLIO العالمية
عامل. ربما كنت تفكر في ":crlf:bytes" أو
":بيرليو:بايت".
:crlf طبقة تقوم بترجمة CRLF إلى "\n" لتمييز "النص" و
الملفات "الثنائية" بطريقة MS-DOS وأنظمة التشغيل المشابهة.
(ويفعل ذلك حاليًا ليس تقليد MS-DOS فيما يتعلق بمعاملة Control-Z
كونه علامة نهاية الملف.)
:mmap طبقة تنفذ "قراءة" الملفات باستخدام mmap(2) لجعل
يظهر الملف بأكمله في مساحة عنوان العملية، ثم يستخدم ذلك
باعتباره "المخزن المؤقت" لـ PerlIO.
:perlio هذه إعادة تنفيذ للتخزين المؤقت الشبيه بـ stdio المكتوب بتنسيق a
طبقة بيرليو. على هذا النحو فإنه سوف يستدعي أي طبقة تحتها
العمليات، عادةً ":unix".
:pop طبقة زائفة تجريبية تزيل الطبقة العليا. يستخدم مع
نفس الرعاية المخصصة للنيتروجليسرين.
:raw طبقة زائفة تتعامل مع الطبقات الأخرى. تطبيق ": الخام"
الطبقة تعادل استدعاء "binmode($fh)". يجعل الدفق
تمرير كل بايت كما هو دون ترجمة. على وجه الخصوص، كل من CRLF
تم تعطيل الترجمة والإدراك ":utf8" من اللغة.
على عكس الإصدارات السابقة من Perl، فإن ":raw" هو ليس فقط عكس
":crlf": طبقات أخرى من شأنها أن تؤثر على الطبيعة الثنائية لـ
تتم أيضًا إزالة الدفق أو تعطيله.
:stdio توفر هذه الطبقة واجهة PerlIO عن طريق تغليف ANSI C
مكالمات مكتبة "stdio". توفر الطبقة كلا من التخزين المؤقت والإدخال والإدخال. ملحوظة
أن طبقة ":stdio" تفعل ذلك ليس قم بترجمة CRLF حتى لو كان الأمر كذلك
السلوك الطبيعي للمنصة. سوف تحتاج إلى طبقة ":crlf" أعلاه
عليه أن يفعل ذلك.
:unix طبقة منخفضة المستوى تستدعي "قراءة" و"كتابة" و"lseek" وما إلى ذلك.
:utf8 طبقة زائفة تمكن علامة في الطبقة أدناه لإخبار Perl بذلك
يجب أن يكون الإخراج في utf8 ويجب اعتبار هذا الإدخال بالفعل
في نموذج utf8 صالح. تحذير: It هل ليس التحقق لـ صلاحية as
هذه ينبغي be التعامل مع أقصى الحذر لـ إدخال، لان
أمن انتهاكات يمكن حدث مع غير الأقصر UTF-8 الترميزات, وما إلى ذلك.
بشكل عام، ":encoding(utf8)" هو الخيار الأفضل عند قراءة UTF-8
البيانات المشفرة.
:win32 على منصات Win32 هذا تجريبي تستخدم الطبقة IO "المقبض" الأصلي
بدلاً من طبقة واصف ملف رقمي يشبه Unix. معروف أن يكون
عربات التي تجرها الدواب في هذا الإصدار (5.14).
يجب أن تعطي مجموعة الطبقات الافتراضية نتائج مقبولة على جميع الأنظمة الأساسية
بالنسبة لمنصات Unix، سيكون ذلك معادلاً لـ "unix perlio" أو "stdio".
تم إعداد التكوين لتفضيل تنفيذ "stdio" إذا كان النظام
توفر المكتبة الوصول السريع إلى المخزن المؤقت؛ وإلا فإنه يستخدم "unix
بيرليو" التنفيذ.
في Win32، الافتراضي في هذا الإصدار (5.14) هو "unix crlf". "stdio" الخاص بـ Win32
يحتوي على عدد من الأخطاء/الميزات الخاطئة لـ Perl IO والتي تعتمد إلى حد ما على
الإصدار والبائع للمترجم C. باستخدام طبقة "crlf" الخاصة بنا كطبقة
buffer يتجنب هذه المشكلات ويجعل الأمور أكثر اتساقًا. طبقة "crlf".
يوفر تحويل CRLF وكذلك التخزين المؤقت.
يستخدم هذا الإصدار (5.14) "unix" كطبقة سفلية في Win32، وما زال كذلك
يستخدم إجراءات واصف الملف الرقمي للمترجم C. هناك
طبقة "Win32" الأصلية التجريبية، والتي من المتوقع أن يتم تحسينها وينبغي
أصبح في نهاية المطاف الافتراضي ضمن Win32.
يتم تجاهل متغير البيئة PERLIO تمامًا عند تشغيل Perl
وضع العيب.
بيرليو_ديبوغ
إذا تم التعيين على اسم ملف أو جهاز، فستتم عمليات معينة لنظام PerlIO الفرعي
سيتم تسجيل الدخول إلى هذا الملف، الذي يتم فتحه في وضع الإلحاق. الاستخدامات النموذجية هي
في يونكس:
% env PERLIO_DEBUG=/dev/tty البرنامج النصي بيرل ...
وتحت Win32، ما يعادل تقريبًا:
> اضبط PERLIO_DEBUG=CON
نص بيرل...
يتم تعطيل هذه الوظيفة بالنسبة للنصوص البرمجية setuid وللنصوص البرمجية التي يتم تشغيلها باستخدامها -T.
PERLLIB قائمة الدلائل التي يمكنك البحث فيها عن ملفات مكتبة Perl قبل البحث
في المكتبة القياسية والدليل الحالي. إذا تم تعريف PERL5LIB،
لم يتم استخدام PERLLIB.
يتم تجاهل متغير البيئة PERLLIB بالكامل عند تشغيل Perl
وضع العيب.
PERL5DB الأمر المستخدم لتحميل كود مصحح الأخطاء. الافتراضي هو:
البدء {تتطلب "perl5db.pl" }
يتم استخدام متغير البيئة PERL5DB فقط عند بدء تشغيل Perl بنسخة مجردة
-d التبديل.
بيرل5DB_THREADED
إذا تم تعيينها على قيمة حقيقية، فهذا يشير إلى مصحح الأخطاء الذي يتم تصحيح الأخطاء فيه
يستخدم المواضيع.
PERL5SHELL (خاص بمنفذ Win32)
في منافذ Win32 فقط، يمكن تعيينها على غلاف بديل يجب أن يستخدمه Perl
داخليًا لتنفيذ أوامر "backtick" أو النظام(). الافتراضي هو "cmd.exe
/x/d/c" على نظام التشغيل WindowsNT و"command.com /c" على نظام التشغيل Windows95. القيمة هي
تعتبر مفصولة بمساحة. تسبق أي شخصية تحتاج إلى الحماية،
مثل مسافة أو شرطة مائلة عكسية، مع شرطة مائلة عكسية أخرى.
لاحظ أن Perl لا يستخدم COMSPEC لهذا الغرض لأن COMSPEC لديه قيمة عالية
درجة التباين بين المستخدمين، مما يؤدي إلى مخاوف بشأن قابلية النقل. بجانب،
يمكن لـ Perl استخدام الصدفة التي قد لا تكون مناسبة للاستخدام التفاعلي والإعداد
COMSPEC لمثل هذه القشرة قد تتداخل مع الأداء السليم للآخرين
البرامج (التي عادةً ما تبحث في COMSPEC للعثور على غلاف مناسب للبرامج التفاعلية
استعمال).
قبل الإصدارين 5.10.0 و5.8.8 من Perl، لم يتم فحص PERL5SHELL عند التشغيل
أوامر خارجية. يوصى بتعيين (أو حذف) بشكل صريح
$ENV{PERL5SHELL} عند التشغيل في الوضع الملوث ضمن Windows.
PERL_ALLOW_NON_IFS_LSP (خاص بمنفذ Win32)
اضبط على 1 للسماح باستخدام LSPs غير المتوافقة مع IFS (Layered Service
مقدمي الخدمة). يبحث Perl عادةً عن LSP متوافق مع IFS لأن هذا هو الحال
مطلوب لمضاهاة مآخذ توصيل Windows كمقابض ملفات حقيقية. لكن،
قد يتسبب هذا في حدوث مشكلات إذا كان لديك جدار حماية مثل McAfee وصي، التي
يتطلب أن تستخدم جميع التطبيقات LSP الخاص بها ولكنها غير متوافقة مع IFS،
لأنه من الواضح أن Perl سيتجنب عادة استخدام مثل هذا LSP.
تعيين متغير البيئة هذا على 1 يعني أن Perl سيستخدم ببساطة
أول LSP مناسب تم ذكره في الكتالوج، والذي يحتفظ به McAfee وصي
سعيد - وفي هذه الحالة بالذات لا يزال بيرل يعمل أيضًا بسبب McAfee
وصييلعب LSP في الواقع ألعابًا أخرى تسمح للتطبيقات التي تتطلب ذلك
التوافق مع IFS للعمل.
بيرل_DEBUG_MSTATS
يكون هذا مناسبًا فقط إذا تم تجميع لغة Perl مع "malloc" المضمن في لغة Perl
توزيع؛ وهذا يعني أنه إذا كان "Perl -V:d_mymalloc" هو "تعريف".
إذا تم ضبطه، فسيؤدي ذلك إلى تفريغ إحصائيات الذاكرة بعد التنفيذ. إذا تم التعيين على
عدد صحيح أكبر من واحد، يؤدي أيضًا إلى تفريغ إحصائيات الذاكرة بعد التجميع.
بيرل_DESTRUCT_LEVEL
ذات صلة فقط إذا تم إنشاء ملف Perl القابل للتنفيذ باستخدام -تصحيح الأخطاء، هذا
يتحكم في سلوك التدمير العالمي للأشياء والمراجع الأخرى.
راجع "PERL_DESTRUCT_LEVEL" في نصائح الاختراق لمزيد من المعلومات.
بيرل_DL_NONLAZY
اضبط على "1" لحل لغة Perl الكل رموز غير محددة عند تحميل ديناميكية
مكتبة. السلوك الافتراضي هو حل الرموز عند استخدامها.
يعد تعيين هذا المتغير مفيدًا أثناء اختبار الامتدادات، لأنه يضمن ذلك
أن تحصل على خطأ في أسماء الوظائف التي بها أخطاء إملائية حتى لو كانت مجموعة الاختبار
لا يدعوهم.
ترميز بيرل
في حالة استخدام براغما "استخدام التشفير" بدون اسم ترميز صريح، فإن
تتم استشارة متغير البيئة PERL_ENCODING للحصول على اسم ترميز.
بيرل_هاش_SEED
(منذ Perl 5.8.1، دلالات جديدة في Perl 5.18.0) تستخدم لتجاوز
التوزيع العشوائي لوظيفة التجزئة الداخلية لـ Perl. يتم التعبير عن القيمة في
سداسي عشري، وقد يتضمن 0x بادئة. يتم التعامل مع الأنماط المقتطعة على أنها
على الرغم من أنها مُلحقة بأصفار كافية كما هو مطلوب.
إذا تم توفير الخيار، ولم يتم تعيين "PERL_PERTURB_KEYS"، فستكون قيمة
يشير الرقم "0" إلى "PERL_PERTURB_KEYS=0" وأي قيمة أخرى تشير إلى ذلك
"PERL_PERTURB_KEYS=2".
يرجى NOTE: إنّ مزيج بذرة is حساس معلومات. يتم العشوائية التجزئة ل
الحماية من الهجمات المحلية والبعيدة ضد كود بيرل. بواسطة يدويا
عند وضع البذرة، قد يتم فقدان هذه الحماية جزئيًا أو كليًا.
راجع "هجمات التعقيد الخوارزمي" في perlsec، و"PERL_PERTURB_KEYS"، و
"PERL_HASH_SEED_DEBUG" لمزيد من المعلومات.
بيرل_بيرتورب_كيز
(منذ Perl 5.18.0) اضبط على "0" أو "NO" ثم سيتم تعيين مفاتيح الاجتياز
قابل للتكرار من التشغيل إلى التشغيل لنفس PERL_HASH_SEED. الإدراج في التجزئة
لن يغير الترتيب إلا لتوفير مساحة أكبر في التجزئة. متى
مع إعداد PERL_HASH_SEED، يكون هذا الوضع أقرب إلى ما قبل 5.18
السلوك كما يمكنك الحصول عليه.
عند التعيين على "1" أو "RANDOM"، سيتم ترتيب مفاتيح الاجتياز بطريقة عشوائية. كل
سيتغير وقت إدراج التجزئة في ترتيب المفاتيح بطريقة عشوائية.
قد لا يكون الأمر قابلاً للتكرار في تشغيل البرنامج التالي حتى لو كان
تم تحديد PERL_HASH_SEED. هذا هو الوضع الافتراضي لبيرل.
عند التعيين على "2" أو "حتمي"، فإن إدخال المفاتيح في التجزئة سيؤدي إلى حدوث ذلك
تغيير ترتيب المفاتيح، ولكن بطريقة قابلة للتكرار من تشغيل البرنامج إلى
تشغيل البرنامج.
NOTE: يعتبر استخدام هذا الخيار غير آمن، وهو مخصص فقط لـ
تصحيح السلوك غير الحتمي في دالة التجزئة الخاصة بـ Perl. لا تستخدمه في
الإنتاج.
راجع "هجمات التعقيد الخوارزمي" في perlsec و"PERL_HASH_SEED" و
"PERL_HASH_SEED_DEBUG" لمزيد من المعلومات. يمكنك الحصول على المفتاح وتعيينه
قناع الاجتياز لتجزئة معينة باستخدام "hash_traversal_mask()"
وظيفة من التجزئة::Util.
بيرل_هاش_SEED_DEBUG
(منذ Perl 5.8.1.) اضبط على "1" لعرض (إلى STDERR) معلومات حول
وظيفة التجزئة، والبذور، ونوع التوزيع العشوائي لاجتياز المفتاح الساري
في بداية التنفيذ. تم دمج هذا مع "PERL_HASH_SEED" و
يهدف "PERL_PERTURB_KEYS" إلى المساعدة في تصحيح السلوك غير الحتمي
الناجمة عن العشوائية التجزئة.
ملاحظات أن أي معلومات حول وظيفة التجزئة، وخاصة بذور التجزئة
حساس معلومات: من خلال معرفة ذلك، يمكن للمرء صياغة هجوم رفض الخدمة
ضد كود بيرل، حتى عن بعد؛ راجع "هجمات التعقيد الخوارزمي" في
بيرلسيك لمزيد من المعلومات. Do ليس كشف هيه مزيج بذرة للأشخاص الذين
لا تحتاج إلى معرفة ذلك. راجع أيضًا "hash_seed()" و"key_traversal_mask()" في
التجزئة::Util.
مثال على الإخراج قد يكون:
HASH_FUNCTION = ONE_AT_A_TIME_HARD HASH_SEED = 0x652e9b9349a7a032 PERTURB_KEYS = 1 (عشوائي)
بيرل_MEM_LOG
إذا تم تكوين Perl الخاص بك باستخدام -Accflags=-DPERL_MEM_LOG، وضع
يتيح متغير البيئة "PERL_MEM_LOG" إمكانية تسجيل رسائل تصحيح الأخطاء. القيمة
لديه النموذج "<الرقم>[م] [س] [ر]"، أين "رقم" هو رقم واصف الملف
الذي تريد الكتابة إليه (2 هو الافتراضي)، ويتم تحديد مجموعة الحروف
التي تريد الحصول على معلومات حول الذاكرة (m) و/أو (s)v، اختياريًا
(ر) الطوابع الزمنية. على سبيل المثال، يقوم "PERL_MEM_LOG=1mst" بتسجيل كافة المعلومات إلى stdout.
يمكنك الكتابة إلى واصفات الملفات المفتوحة الأخرى بعدة طرق:
$ 3>foo3 PERL_MEM_LOG=3 مليون بيرل ...
PERL_ROOT (خاص بمنفذ VMS)
اسم منطقي ذو جذر مخفي للترجمة يحتوي على لغة Perl والاسم المنطقي
جهاز لمسار @INC على VMS فقط. الأسماء المنطقية الأخرى التي تؤثر على Perl on
يتضمن نظام VMS PERLSHR، وPERL_ENV_TABLES، وSYS$TIMEZONE_DIFFERENTIAL، ولكنهم
اختياري ومناقشته بشكل أكبر في perlvms وin التمهيدي.vms في مصدر بيرل
التوزيع.
بيرل_سيغنالس
متوفر في بيرلز 5.8.1 والإصدارات الأحدث. إذا تم ضبطه على "غير آمن"، فإن الإصدار السابق لـ Perl-5.8.0
تتم استعادة سلوك الإشارة (وهو فوري ولكنه غير آمن). إذا تم تعيينه على
"آمنة"، ثم يتم استخدام الإشارات الآمنة (ولكن المؤجلة). راجع "الإشارات المؤجلة
(الإشارات الآمنة)" في perlipc.
بيرل_يونيكود
ما يعادل -C تبديل سطر الأوامر. لاحظ أن هذا ليس منطقيا
عامل. تعيين هذا على "1" ليس الطريقة الصحيحة "لتمكين Unicode"
(مهما كان ذلك يعني). يمكنك استخدام "0" "لتعطيل Unicode"، على الرغم من (أو
بدلاً من ذلك، قم بإلغاء تعيين PERL_UNICODE في Shell الخاص بك قبل بدء تشغيل Perl). انظر
الوصف ل -C التبديل لمزيد من المعلومات.
تسجيل الدخول إلى SYS$ (خاص بمنفذ VMS)
يُستخدم إذا لم يكن لدى chdir وسيطة ولم يتم تعيين HOME وLOGDIR.
يحتوي Perl أيضًا على متغيرات البيئة التي تتحكم في كيفية تعامل Perl مع البيانات الخاصة بها
لغات طبيعية معينة؛ انظر بيرلوكال.
قد يتم أحيانًا استخدام لغة Perl ووحداتها ومكوناتها المختلفة، بما في ذلك أطر الاختبار الخاصة بها
الاستفادة من بعض متغيرات البيئة الأخرى. بعض هذه خاصة ب
منصة معينة. يرجى الرجوع إلى وثائق الوحدة المناسبة وأي منها
وثائق النظام الأساسي الخاص بك (مثل perlsolaris، وperllinux، وperlmacosx، وperlwin32، وما إلى ذلك)
للمتغيرات الخاصة بتلك المواقف المحددة.
يجعل Perl جميع متغيرات البيئة متاحة للبرنامج الذي يتم تنفيذه، ويمررها
هذه جنبًا إلى جنب مع أي عمليات فرعية يبدأها. ومع ذلك، فإن البرامج التي تعمل بنظام setuid ستفي بالغرض
حسنًا، عليك تنفيذ الأسطر التالية قبل القيام بأي شيء آخر، فقط للحفاظ على الأشخاص
صادق:
$ENV{PATH} = "/ بن:/ البيرة / بن"؛ # أو ما تحتاجه
$ENV{SHELL} = "/ بن / ش"إذا كان موجودًا $ENV{SHELL};
حذف @ENV{qw(IFS CDPATH ENV BASH_ENV)};
استخدم perlrun عبر الإنترنت باستخدام خدمات onworks.net