in reply to Moose and BUILD

So, my question is...why am I seeing Foo::BUILD execute twice?

Because you used

before 'BUILD' => sub {
instead of
sub BUILD {

The BUILD of each class is called, from base down. It's not a virtual method.

Replies are listed 'Best First'.
Re^2: Moose and BUILD
by tj_thompson (Monk) on Jun 15, 2011 at 21:16 UTC

    Is my assessment in the last paragraph of my original post correct? I purposefully intended to use a before modifier as opposed to an entire new BUILD method. My hope was the before modifier would be applied to the parent BUILD method since the child did not have a BUILD method. I didn't realize I would end up running both parent and child BUILDs independently.

    I do find it odd that in my reply above with the around BUILDARGS modifier, the Foo::BUILD method is only executed once. I would have expected the child to inherit the BUILD method and execute it also (thus required an empty BUILD method in the child if I wanted no further action taken at that time).

    Why does the child seem to inherit (and run) Foo::BUILD when I give a before BUILD modifier in it, but not inherit (or run) BUILD when I do not provide a modifier on the method?

      Is my assessment in the last paragraph of my original post correct?

      You already disproved it here

      I do find it odd that in my reply above with the around BUILDARGS modifier,

      BUILDARGS should be chained from child to base. BUILD should be chained from base to child.

        Thanks again for your time Ikegami. I owe you a few beers someday for all the time you spend on my questions.