sub logger_class { my $self = shift; my $set = 0; # was a (new?) class passed in? $self->{__PACKAGE__ . ':logger_class'} = shift and $set++ if @_; # if we don't have one, construct the default. unless (exists $self->{__PACKAGE__ . ':logger_class'}) { $self->{__PACKAGE__ . ':logger_class'} = ref(shift) . '::Debug'; $set++; } # if it changed, do any configuration needed. if ($set) { # load the class, etc. } # done - return it. $self->{__PACKAGE__ . ':logger_class'}; }