1.pm
package 1;
our $Var= "hello";
2.pl
use 1;
print "$Var\n";
我正在完成上面提到的2个文件1.pm
和2.pl
中的内容。
在2.pl
中,我无法访问该变量$Var
。
1.pm
文件中声明该变量(变量应该是全局的)?
谢谢,
答案 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):
只有以字母(或下划线)开头的标识符才是 存储在包的符号表中。