sub marsify { my ($func) = @_; return sub { my @mars_caller = caller(0); mars::print::call(\@mars_caller, \@_); $func->(@_); } } # enumerate through package symbols, finding subroutines # for each sub found # patch symbol table: *subname = marsify(\&subname);