package Kyle::Logger; use Dpommert::Module; Dpommert::Module->set_default_logger( __PACKAGE__ ); package Dpommert::Module; my $default_logger_class = 'Dpommert::Logger'; sub set_default_logger { my $class = shift; die 'class method' if ref $class; $default_logger_class = shift; } sub get_logger { my $self = shift; return $self->{logger} ||= $default_logger_class->new(); } sub set_logger { my $self = shift; $self->{logger} = shift; }