for my $name (qw/ config components plugins methods hooks /) { my $method = "class_component_$name"; no strict 'refs'; *{__PACKAGE__."::$method"} = sub { shift->{"_$method"} }; } #### sub new { my($class, $c, $args) = @_; $args ||= {}; my $self = bless { %{ $args }, _class_component_plugins => [], _class_component_components => $default_components->{$c}, _class_component_methods => {}, _class_component_hooks => {}, _class_component_config => $args->{config} || {}, _class_component_default_plugins => $default_plugins->{$c}, }, $c; $self->load_plugins(@{ $default_plugins->{$c} }, @{ $args->{load_plugins} || [] }); $self; } #### my @class_component = grep /^class_component_/ keys %$self ; #### build_accessors(@class_component) unless $build_accessors++;