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; }; } }