هل يجب علي تشغيل تحذيرات Perl باستخدام مفتاح سطر الأوامر أو pragma؟

StackOverflow https://stackoverflow.com/questions/221919

  •  03-07-2019
  •  | 
  •  

سؤال

هل هناك فرق بين المثالين أدناه لبدء برنامج Perl النصي؟إذا كان الأمر كذلك، متى سأستخدم أحدهما بدلاً من الآخر؟

مثال 1:

#!/usr/bin/perl

use warnings;

مثال 2:

#!/usr/bin/perl -w
هل كانت مفيدة؟

المحلول

سيؤدي استخدام المفتاح إلى تمكين جميع التحذيرات الواردة الجميع الوحدات التي يستخدمها برنامجك.باستخدام البراجما يمكنك تمكينه فقط في تلك الوحدة النمطية المحددة (أو البرنامج النصي).من الناحية المثالية، يمكنك استخدام التحذيرات في جميع الوحدات النمطية الخاصة بك، ولكن هذا ليس هو الحال في كثير من الأحيان.يمكن أن يؤدي استخدام المفتاح إلى حصولك على الكثير من التحذيرات عند استخدام وحدة طرف ثالث ليست آمنة للتحذيرات.

لذلك، لا يهم من الناحية المثالية، ولكن من الناحية العملية، غالبًا ما يكون من الأفضل للمستخدمين النهائيين عدم استخدام المفتاح ولكن البراجما.

نصائح أخرى

ال -w يقوم مفتاح سطر الأوامر بتشغيل التحذيرات عالميًا للمترجم بأكمله.على الجانب الآخر، use warnings هي "براغما معجمية" ولا تنطبق إلا في النطاق المعجمي الذي تستخدم فيه.عادة، تضع ذلك في أعلى الملف بحيث ينطبق على الملف بأكمله، ولكن يمكنك أيضًا توسيع نطاقه ليشمل كتلًا معينة.وبالإضافة إلى ذلك، يمكنك استخدام no warnings لإيقاف تشغيلها مؤقتًا داخل الكتلة، في الحالات التي تحتاج فيها إلى القيام بسلوك يولد التحذير.لا يمكنك فعل ذلك إذا كان لديك -w على.

للحصول على تفاصيل حول كيفية عمل التحذيرات المعجمية، بما في ذلك كيفية تشغيل مجموعات فرعية مختلفة منها وإيقاف تشغيلها، راجع com.perllexwarn وثيقة.

و"- ث" أقدم وتستخدم ليكون السبيل الوحيد لتحويل التحذيرات على (في الواقع "-w" تمكن فقط $ ^ متغير W العالمي). "استخدام تحذيرات"؛ هو الآن أفضل (اعتبارا من النسخة 5.6.0 والإصدارات الأحدث) لأن (كما سبق ذكره) أن لديها معجمية بدلا من نطاق عالمي، ويمكنك تشغيل / إيقاف تحذيرات محددة. و لا تنسى أن تبدأ أيضا مع "استخدام صارمة." : -)

والتمييز أخرى الجدير بالذكر، هو أن "تحذيرات استخدام" PRAGMA كما يتيح لك اختيار تحذيرات محددة لتمكين (وعلى نحو مماثل، "أي تحذيرات" يسمح لك لتحديد التحذيرات لتعطيل).

وبالإضافة إلى تمكين / تعطيل تأكيدات معينة باستخدام PRAGMA، يمكنك أيضا تعزيز بعض أو كل التحذيرات أخطاء:

use strict;
use warnings FATAL => 'all', NONFATAL => 'exec';

هل على حد سواء! دائما!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top