如何在Perl模块中使用作用域?

时间:2010-05-12 20:54:54

标签: perl module scoping

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

我想要它

b.pm

$f=1;

a.pl

use b;

print $f

3 个答案:

答案 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,则会得到您期望的结果。

更长的答案包括许多因未能遵守最低限度的良好做法而受到谴责,并且已经被淘汰。

相关问题