use My::Logger; open(my $log_fh, '>>', 'blah.log') or die "Couldn't open log file."; My::Logger->set_handle($log_fh); My::Logger->log("Processing..."); ... My::Logger->log("done."); #### package My::Logger; my $fh = *STDERR; sub set_handle { my ($class, $new_fh) = @_; $fh = $new_fh; } sub log { my $msg = join('', @_); $msg =~ s/\n+\z/\n/; print $fh $msg; } 1;