41 $self=shift #### use LogMessages qw(/path/to/logfile); #### my %logfile; sub import { my $class = shift; $logfile{ +caller} = @_ ? shift : "/tmp/logfile.$$"; }; #### sub _log : ATTR(CODE) { my ($pkg, $sym, $code) = @_; if ( DEBUG ) { my $name = *{ $sym }{NAME}; no warnings 'redefine'; # Turn off symbol redefinitions within the block. *{ $sym } = sub { log_message ($logfile{$pkg}, "Entering sub $pkg\:\:$name\n"); my @ret = $code->( @_ ); log_message ($logfile{$pkg}, "Leaving sub $pkg\:\:$name\n"); return @ret; }; } } #### sub log_message { my $logfile = shift; open my $LOGFILE, '>>', $logfile or die "Cannot open logfile '$logfile': $!"; my $time = getLogTime(); print $LOGFILE $time, " "; for (@_){ print $LOGFILE @_; } }