sub some_method { my $self = shift; $self->get_some_framework->get_logger->log_trace("Hello, world!"); } #### # SomeFramework.pm package SomeFramework; use Moose; use MooX::ProtectedAttributes; protected_has logger => ( is => 'ro', isa => 'SomeFramework::Logger', ); sub log_trace { my ($self, $msg) = @_; $self->logger->log_trace($msg); } 1; #### sub some_method { my $self = shift; $self->get_some_framework->log_trace("Hello, world!"); }