هل يسمح لك برنامج Perl Monkey-Patching برؤية نطاق الحزمة المصححة؟

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

سؤال

أنا أقوم بتصحيح حزمة باستخدام تقنية مقدمة في بداية "كيف يمكنني تصحيح أسلوب المثيل في لغة Perl؟".المشكلة التي أواجهها هي أن الروتين الفرعي الأصلي يستخدم مستوى الحزمة my المتغير الذي يبدو أن الروتين الفرعي المصحح لا يمكنه الوصول إليه، إما عن طريق مواصفات المسار الكامل أو الاستخدام الضمني.

هل هناك أي طريقة للحصول على البيانات التي تم تحديد نطاقها بهذه الطريقة لاستخدامها في الروتين الفرعي المصحح؟

هل كانت مفيدة؟

المحلول

ويمكنك الحصول على lexicals مع PadWalker حدة. الشر، لكنه يعمل.

نصائح أخرى

لا.الشيء الذي أنت مخطئ فيه هو أنهم كذلك لا نطاق الحزمة.المتغير المعجمي هو بحكم التعريف يقتصر على نطاقه المعجمي، وبعبارة أخرى، الكتلة التي هو فيها.

وLexicals (أي: أعلن مع 'بلادي') تكون غير مرئية خارج نطاق المفردات (ملف أو كتلة) التي يتم الإعلان عنها. هذا هو بيت القصيد من المتغيرات المعجمية.

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

وليس هناك شيء مثل "مواصفات المسار الكامل" للمتغيرات المعجمية. وهذا أمر المتغيرات الحزمة. إذا كان أعلن فار مع 'لدينا' بدلا من 'بلدي' هل يمكن أن تفعل ذلك.

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