sub import { my $package_name = shift; if ( $package_name !~ /^Application::Stuff_I_Dont_Want_To_Alter::/ ) { no strict 'refs'; no warnings 'redefine'; foreach ( keys %{ *{ $package_name . '::' } } ) { next if ( $_ !~ /[a-z]/ or $_ =~ /::$/ or $_ eq 'isa' or $_ eq 'import' ); if ( *{ $package_name, '::', $_ }{'CODE'} ) { my $code = do{ *{ $package_name, '::', $_ }{'CODE'}; }; *{ $package_name, '::', $_ } = sub { warn "BEGIN sub block...\n"; my @rv = $code->(@_); warn "END sub block...\n"; return @rv; }; } } } }