#!/usr/bin/perl -w use strict; package Test; use Mouse; has 'n' => (is => 'rw', isa => 'Int', lazy => 1, builder => 'do_n'); has 'n2' => (is => 'rw', isa => 'Int', lazy => 1, builder => '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"; return $s->n + 2; } __PACKAGE__->meta->make_immutable(); package main; use Data::Dumper; my $test = Test->new(); warn Dumper $test; $test->n2; warn Dumper $test;