package MyLoggingModule; use strict; use warnings; # ---------- my $logfile; # ---------- sub init { my ($logfile_name) = @_; open($logfile, '>>', $logfile_name) or die "Couldn't open log file."; } sub loggit { my ($log_msg) = @_; print {$logfile} $log_msg, "\n"; } # ---------- 1; #### #!/opt/perl/bin/perl use strict; use warnings; use lib '.'; use MyLoggingModule; use MyModule; use MyOtherModule; # ---------- MyLoggingModule::init('blah.log'); MyLoggingModule::loggit("Doing something in the script..."); MyModule::foo(); MyOtherModule::bar(); MyLoggingModule::loggit("My work here is done."); #### package MyModule; use strict; use warnings; use lib '.'; use MyLoggingModule; # ---------- sub foo { # ... # write a log message. MyLoggingModule::loggit("Doing some work in MyModule::foo()"); # ... } 1; #### package MyOtherModule; use strict; use warnings; use lib '.'; use MyLoggingModule; # ---------- sub bar { # ... # write a log message. MyLoggingModule::loggit("Doing some work in MyOtherModule::bar()"); # ... } 1;