كيف يعمل النطاق في وحدات بيرل؟
سؤال
لا أفهم حقًا كيف يعمل النطاق في وحدات Perl. هذا لا يطبع أي شيء. أود ذلك إذا كان تشغيل A.Pl مطبوع 1
ب
$f=1;
A.Pl
use b;
print $f
المحلول
حسنًا ، لديك الكثير من المفاهيم الخاطئة التي يمكننا معالجتها على أفضل وجه من خلال إصلاح مشكلتك الفورية وإشارةك إلى موارد جيدة.
يجب أن يكون B.PM:
package b;
our $f = 1;
1;
يجب أن يكون A.Pl
use b;
print $b::f
تشغيل كل شيء مع perl -I. a.pl
الآن اذهب للقراءة perldoc
perlmod
حذر جدا.
اقرأ أيضا perldoc
strict
.
نصائح أخرى
يجب أن تبدأ من خلال القراءة حول وحدات Perl في الدليل: perldoc perlmod
في سطر الأوامر ، أو انتقل إلى http://perldoc.perl.org/perlmod.html.
الإجابة المختصرة: على الأرجح لأنك تقوم بتشغيل هذا الرمز على نظام ملفات غير حساسة للحالة ، حيث تطلب الوحدة النمطية b
يحمل الوحدة المدمجة B
. الوحدة الخاصة بك لا يتم تحميلها على الإطلاق. إذا قمت بإعادة تسمية b
, ، تحصل على النتيجة التي تتوقعها.
وشملت الإجابة الأطول الكثير من التضخيم لفشلها في مراقبة الحد الأدنى من الممارسات الجيدة ، وقد تم إبطالها.