Hello,

following Moose::Cookbook::Extending::Recipe4, I would like to create MyMoose, 
so instead of
  use Moose;
  use MooseX::SemiAffordanceAccessor;
I can write just
  use MyMoose;
in all my classes. I have more than 400 such classes and the real MyMoose 
should also do other useful stuff, so it actually should save more than one 
line. However, I have problems even with this minimal example:

## File MyMoose.pm
package MyMoose;
use Moose;
use Moose::Exporter;
#use Moose::Util::MetaRole; # I saw this somewhere, but it didn't help
use MooseX::SemiAffordanceAccessor::Role::Attribute;

Moose::Exporter->setup_import_methods(
    also            => 'Moose',
    class_metaroles => {attribute => 
['MooseX::SemiAffordanceAccessor::Role::Attribute']},
);
1;

## File Try.pm
package Try;
#use Moose; #<--- This should not be needed
use MyMoose;

has 'my_attr' => (is=>'rw');

for (map {$_->fully_qualified_name} __PACKAGE__->meta->get_all_methods ) {
    print "$_\n" if /my_attr/;
}
1;

## From command line
$ perl -MTry -e1
Try::my_attr
# after uncommenting "use Moose" in Try.pm
$ perl -MTry -e1
Try::my_attr
Try::set_my_attr

So it seems that MyMoose can substitute Moose XOR 
MooseX::SemiAffordanceAccessor.
Is this a bug or a (strange) feature?
Is this related to https://rt.cpan.org/Public/Bug/Display.html?id=51561 ?
This is not critical, since I can just add "use Moose; use MyMoose;" to all my 
classes, but it makes me think Moose is a black magic I will never understand.

Thanks for your answers
Martin Popel

Reply via email to