对于 Moose 包,我尝试在 Perl(非 moose)中创建一个对象,然后尝试访问外部的方法。解释这种情况的代码在这里。
package person;
{
use Moose;
sub test {
print "my test print";
}
}
package people {
use person;
my $obj = person->new();
}
$people::obj->test()
Run Code Online (Sandbox Code Playgroud)
我在执行此 perl 代码时遇到以下错误。
Can't call method "test" on an undefined value at test.pm
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
您从未将任何内容分配给$people::obj. 您为一个不相关的词法$obj变量命名为,该变量在程序到达方法调用时甚至不存在。词法变量(例如由 创造的变量my)的作用域是它们所在的最里面的卷曲,也就是说它们只在那里可见(可访问)。
使固定:
package Person;
{
use Moose;
sub test {
print "my test print";
}
}
package People {
my $obj = person->new();
sub get_person {
return $obj;
}
}
People->get_person->test();
Run Code Online (Sandbox Code Playgroud)
笔记:
use person;了阻止程序编译或无意中执行一些潜在冲突代码的内容。