Perl无法从模块获取变量,但可以调用函数

时间:2014-05-31 15:32:13

标签: perl module

我有一些愚蠢的错误,因为我自己找不到的不实际。我有一个模块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

2 个答案:

答案 0 :(得分:3)

尝试使用our代替my

our $some_var = "lalalala";

答案 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";