#!/usr/bin/perl -w use strict; package Test; use Mouse; use YAML::XS; has 'n' => (is => 'rw', isa => 'Int', builder => 'do_n'); has 'n2' => (is => 'rw', isa => 'Int'); after do_n => \&do_n2; sub do_n { my $s = shift; print "In do_n() \$s = $s\n"; return 3; } sub do_n2 { my $s = shift; print "In do_n2() \$s = $s\n"; # any reference to $s->{'n'} here results in uninitialized value... print Dump $s; } __PACKAGE__->meta->make_immutable(); package main; my $test = Test->new();