我真的不明白如何在Perl模块中使用作用域。这不会打印任何东西。如果运行a.pl打印1
我想要它b.pm
$f=1;
a.pl
use b;
print $f
答案 0 :(得分:11)
好的,你有很多误解,我们可以通过解决你的直接问题并指出你的好资源来解决这个问题。
b.pm应该是:
package b;
our $f = 1;
1;
a.pl应该是
use b;
print $b::f
使用perl -I. a.pl
现在仔细阅读perldoc
perlmod
。
另请阅读perldoc
strict
。
答案 1 :(得分:3)
您应该首先阅读手册中的Perl模块:perldoc perlmod
,或转到http://perldoc.perl.org/perlmod.html。
答案 2 :(得分:2)
简短回答:很可能是因为您在不区分大小写的文件系统上运行此代码,要求模块b
加载内置模块B
。您的模块根本没有加载。如果您重命名b
,则会得到您期望的结果。
更长的答案包括许多因未能遵守最低限度的良好做法而受到谴责,并且已经被淘汰。