package Devel::TraceMethods; use strict; sub import { my ($package, $caller) = @_; my $src; { no strict 'refs'; $src = \%{$caller . '::'}; } foreach my $symbol (keys %$src) { my $sub; if (defined($sub = *{$src->{$symbol}}{CODE}) and (defined(&$sub))) { undef $src->{$symbol}; $src->{$symbol} = sub { logCall($symbol); return $sub->(@_); }; } } } sub logCall { print STDERR "Executing $_[0]!\n"; } 1;