----- Original Message ----- From: "David Oswald"


To start, we'll create a simple module, and put it in
C<~/project/lib/> as C<MyModule.pm>:

   package MyModule;

   use Inline CPP => 'DATA';
   use parent 'Exporter';
   our @EXPORT = 'greet';

   # Nothing to see here.

   1;

   __DATA__
   __CPP__

   void greet() {
     std::cout << "Hello world\n";
   }

Now we'll create a script and put it in C<~/project/bin/> as C<myscript.pl>:

   use FindBin;
   use lib "$FindBin::Bin/../lib";

   use MyModule;

   greet();


=head2 What happens now?

The first time you run C<myscript.pl>, Inline::CPP will build the C++
code from MyModule.pm, and assuming the build succeeds, it will be
cached so that on future runs there is no need to recompile unless the
C++ code is altered in some way.

If you have scripts in *different* directories, each of which uses MyModule, then I think compilation will occur for the first running of *each* of those scripts. This could be avoided by specifying the fully qualified path to a designated build directory, using the DIRECTORY config option (in MyModule.pm).

Can't think of any other problems with your proposal.

Cheers,
Rob

Reply via email to