Question about creating objects using Moose::Meta::Class

[email protected] (Bald Man Tom)
Newsgroups perl.moose
Message-ID <[email protected]>
Greetings.  I was leafing through the Moose documentation the other day 
when I stumbled across Moose::Meta::Class.  If I understand correctly, 
one of the things I can do with this module is create metaclasses, then 
use those to create new objects.  However, when I do so, the BUILD subs 
don't seem to be called in the same way as when I create objects from 
"traditional" Moose classes:

Consider this bogus example:

---

#! perl

use strict;
use warnings;

package My::Class;
use Moose;

sub BUILD { print "BUILD for My::Class\n"; }

package My::SubClass;

use Moose;
extends 'My::Class';
sub BUILD { print "BUILD for My::SubClass\n"; }

package main;

use Moose::Meta::Class;

my $mc = Moose::Meta::Class->create( 'My::MetaSubClass',
    superclasses => [ 'My::Class' ],
    methods => {
        BUILD   => sub { print "BUILD for My::MetaSubClass\n"; },
    },
);

print "Creating a new object from the metaclass\n";
my $obj_from_metaclass = $mc->new_object();
print "Creation complete\n";

print "\nCreating a new object from the My::SubClass\n";
my $obj_from_subclass = My::SubClass->new();
print "Creation complete\n";

---

When I run this, I get the following output:

---

Creating a new object from the metaclass
Creation complete

Creating a new object from the My::SubClass
BUILD for My::Class
BUILD for My::SubClass
Creation complete


---

I would have expected the BUILD subs for My::Class and My::MetaSubClass 
to have been called when I called $mc->new_object().  Of course, I can 
do this manually by using $obj_from_metaclass->BUILDALL().

Is my expectation of the BUILD subs being run unfounded?  Or, more 
likely, am I completely misunderstanding the intent of 
Moose::Meta::Class in the first place?

Thanks!
Tom
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.