Offer to strip carp::datum calls statically
# Put this at the top of the Makefile.PL for your module use ExtUtils::MakeMaker; # you may omit this line use Carp::Datum::MakeMaker;
The \*(C`Carp::Datum::MakeMaker\*(C' module supersedes the regular WriteMakefile() routine of \*(C`ExtUtils::MakeMaker\*(C'.
When running the Makefile.PL from a module interactively, the user will be asked whether calls to \*(C`Carp::Datum\*(C' should be stripped at build time.
By default, or when running non-interactively, most calls to Carp::Datum routines will be removed: the \*(C`datum_strip\*(C' program will be invoked to filter *.pm files during the build process. This program is a mere wrapper for the datum_strip() routine, defined in \*(C`Carp::Datum::Strip\*(C'.
The only call that will not be stripped is the \s-1DTRACE\s0() call. However, it will be dynamically remapped to a \*(C`Log::Agent\*(C' call. It cannot be statically remapped because of its baroque interface.
At the top of Makefile.PL, insert
use Carp::Datum::MakeMaker;
which will take care of loading \*(C`ExtUtils::MakeMaker\*(C'. Note that it makes sense to refer to this module, since \*(C`Carp::Datum\*(C' is being used internally, and therefore the user will not be able to install the module if they do not have \*(C`Carp::Datum\*(C' already installed.
If you wish to be nicer about \*(C`Carp::Datum\*(C' not being installed, you can say instead:
use ExtUtils::MakeMaker; eval "use Carp::Datum::MakeMaker;";
WriteMakefile( 'NAME' => "Your::module::name", 'PREREQ_PM' => { 'Carp::Datum' => '0.100', }, );
It will allow them to run the Makefile.PL, and yet be reminded about the missing \*(C`Carp::Datum\*(C' module. Chances are they won't be able to go much farther though...
Christophe Dehaudt and Raphael Manfredi are the original authors.
Send bug reports, hints, tips, suggestions to Dave Hoover at <[email protected]>.
Carp::Datum::Strip\|(3), ExtUtils::MakeMaker\|(3).