use strict; use warnings; use Logfile; use Communication; my $log = new Logfile (...); my $com = new Communication ($log, ...); $log->open(...); $log->write(...) if($log->is_open()); $com->do_something(); $log->close(...); .... package Communication; sub new { my $class=shift; my $log=shift; .... $self->{LOG}=$log; .... bless($self, $class); return $self; } sub do_something { my $self=shift; .... my $log=$self->{LOG}; $log->write(...) if($log && $log->is_open()); .... } ....