Perl Moose方法属性

时间:2014-03-02 17:40:25

标签: perl

Moose是否有办法获取类方法属性。我从之前的问题中了解到,像Sub :: Talisman这样的独立模块可以获得模块属性。

如果我运行下面的代码,我会收到错误“无效的CODE属性:Public at ...”

#============================
package BaseClass;
use Moose; 

#============================
package SubClass;
use Moose;
extends qw(BaseClass);

sub greet : Public {
    my $self = shift;
    printf("Hello world.");
}
#============================
package main;

my $object = SubClass->new();

# I need to get the Public attribute of the sub greet in the SubClass package.
# if the sub has a Public attribute, call it, otherwise, die.
# does Moose have some methods to get the attributes, I know some other modules like
# Sub::Talisman can get the sub's attributes.
$object->greet();
#============================

我需要在SubClass包中获取sub greet的Public属性。 如果sub有一个Public属性,我会做一些事情,否则,别的什么。

Moose是否有一些获取属性的方法,我知道其他一些模块 Sub :: Talisman可以获得子属性。

1 个答案:

答案 0 :(得分:2)

MooseX::MethodAttributes将属性自省内容集成到Moose元对象协议中。

但是,您获得的特定错误将无法解决。要消除该错误,您需要定义一个名为:Public的属性,以便Perl知道该属性存在。 Sub::TalismanAttribute::Handlers是可用于定义属性的模块。