my $obj = Module->new(log => $obj, arg1 => $arg1); #### my $obj = Module->new($log, $arg1, $arg2); #### my $obj = Module->new($log, %args); #### sub new { my $self = shift; my $log_obj = shift; my %args = @_; # do stuff } #### sub new { my $self = bless {}, shift; $self->{log} = Library->log()->child('This::Module::Name'); my $log = $self->_log()->child('new'); } sub foo { my $self = shift; my $log = $self->_log()->child('foo'); # do fooish type stuff } sub _log { return shift->{log}; }