package Whatever;
BEGIN {
do ($ENV{DEVEL_MODE} ? 'MyMagicInline' : 'MyMagicDirect') or die $@
}
...perl code...
__DATA__
__CPP__
...C++ code... (ok I lied; I'm using Inline::CPP, not Inline::C)
####
use Inline with => 'MyScriptInline';
BEGIN {
$inline_code_file = abs_path($INC{__PACKAGE__ . ".pm"});
}
sub find_code {
local $_ = shift;
s/^.*?__CPP__\n//s;
return $_;
}
use Inline(CPP => $inline_code_file, FILTERS => \&find_code);
Inline->init;
####
require DynaLoader;
{
my ($pkg) = caller(0);
push @{$pkg . "::ISA"}, "DynaLoader";
bootstrap $pkg;
}