2

我真的不明白 Perl 模块中的作用域是如何工作的。这不会打印任何东西。如果运行 a.pl 打印 1 我希望

下午

$f=1;

a.pl

use b;

print $f
4

3 回答 3

11

好的,您有很多误解,我们可以通过解决您当前的问题并为您指出好的资源来最好地解决这些误解。

b.pm 应该是:

package b;
our $f = 1;
1;

a.pl 应该是

use b;
print $b::f

运行整个事情perl -I. a.pl

现在去perldocperlmod仔细阅读。

也读perldocstrict

于 2010-05-12T21:02:56.980 回答
3

您应该从阅读手册中的 Perl 模块开始:perldoc perlmod在命令行中,或访问http://perldoc.perl.org/perlmod.html

于 2010-05-12T21:03:58.070 回答
2

简短回答:很可能是因为您在不区分大小写的文件系统上运行此代码,在该文件系统中请求模块b会加载内置模块B。您的模块根本没有加载。如果你 rename b,你会得到你期望的结果。

更长的答案包括很多对未能遵守甚至最小的良好做法的指责,并且已被省略。

于 2010-05-12T21:12:13.327 回答