in reply to Re: Re (tilly) 3: Dice::Dice
in thread Dice::Dice

The following code is what bothered me:
my %defaults = $caller_is_obj ? %$caller_is_obj : %_default_data;
Instead of that do the following:
my %defaults = $caller->get_default();
and in your module define a get_default() method that returns the same data you put in %_default_data.

Either that or change to:

my %defaults = $caller_is_obj ? %$caller : %_default_data;
(which upon reflection is more likely what you meant).