我有一些愚蠢的错误,因为我自己找不到的不实际。我有一个模块TestMod
,我已将其包含在文件中。我可以访问TestMod
的功能,但我无法获取变量。我的问题是为什么它不起作用。
这是模块:
package TestMod;
use strict;
my $some_var = "lalalala";
sub GetVar()
{
return "something";
}
1;
剧本:
use strict;
use lib "/home/user2121/projects/";
use module;
my $a = TestMod::GetVar();
print "$a\n\n$TestMod::some_var\n";
我的输出是:
something
答案 0 :(得分:3)
答案 1 :(得分:0)
根据您的use module;
电话,很明显您没有完全正确使用套餐。
使其成为您的包及其文件共享相同的名称。例如,package TestMod;
应位于文件TestMod.pm
中。
然后,当您想要使用该套餐时,您只需拨打use TestMod;
此外,您可以使用Exporter
将变量和函数导出到其他名称空间。使用此功能会将您的包更改为以下内容:
package TestMod;
use strict;
use Exporter qw(import);
our @EXPORT_OK = qw($some_var GetVar);
our $some_var = "lalalala";
sub GetVar {
return "something";
}
1;
然后您的主perl脚本将被修改为以下内容:
use strict;
use lib "/home/user2121/projects/";
use TestMod qw(GetVar $some_var);
my $a = GetVar();
print "$a\n\n$some_var\n";