如何从.pm文件访问变量到.pl文件

时间:2014-02-12 07:47:19

标签: perl

1.pm

package 1;
our $Var= "hello";

2.pl

use 1;
print "$Var\n";

我正在完成上面提到的2个文件1.pm2.pl中的内容。 在2.pl中,我无法访问该变量$Var

你能帮助我吗? 我应该如何在1.pm文件中声明该变量(变量应该是全局的)?

谢谢,

2 个答案:

答案 0 :(得分:3)

摘要:包名称不能以数字

开头

详细说明:

首先总是使用

use strict;
use warnings;
在你的脚本中

。你会注意到一条错误信息:

Global symbol "$Var" requires explicit package name at 2.pl line 6.
Execution of 2.pl aborted due to compilation errors.

您可以使用包名称

访问它
$1::Var

你会得到

Bareword found where operator expected at 2.pl line 6, near "$1::Var"
    (Missing operator before ::Var?)
Bareword "::Var" not allowed while "strict subs" in use at 2.pl line 6.
Execution of 2.pl aborted due to compilation errors.

尝试使用不以数字开头的模块名称。例如,Mod.pm

package Mod;

use strict;
use warnings;

our $Var= 'hello';
1;

2.pl

use warnings;
use strict;

use Mod;

print $Mod::Var . "\n";

1;

来自perlmod

  

只有以字母(或下划线)开头的标识符才会存储在包的符号表中。

虽然不是强制性的,但通常(强烈建议)将包名称大写。请参阅示例Perl::Critic::Policy::NamingConventions::Capitalization

答案 1 :(得分:1)

您的问题与声明变量的文件无关,但是使用package关键字将其置于命名空间中。此外,请确保您的命名空间不以数字开头。来自perlmod(1):

  

只有以字母(或下划线)开头的标识符才是   存储在包的符号表中。