On Mon, 14 Feb 2005, Southern, David wrote:

> Hi all, I've been searching for an answer to this questions for a while
> now.  Perlmonks.org suggested this list, I wonder if anyone might have
> some insight that the could share:
> 
> I have a C application that needs to execute fragments of Perl script
> provided by the user.
> 
> I have successfully embedded the Perl interpreter, and it is working
> great. The next step is to provide the ability for the user to make
> calls into my C program to get certain information, take certain
> actions, etc. I have written an extension using SWIG, and built that
> into my program as well. After constructing my perl interpreter, with
> the appropriate xs_init function that adds my DynTrans as a static XSUB,
> I immediately use: 
> 
>     eval_pv("use DynTrans;", FALSE);
> 
> To get my custom functions into the perl interpreter's namespace. This
> all works correctly, and I can call into my C program from the Perl
> script.
> 
> So, the problem: In order for this to work, I have to have DynTrans.pm
> in the directory where I run my application. I want to remove this
> requirement, I want the entire application to be completely
> self-contained. I have gone so far as to modify my code like this: 
> 
>     perl_setup_module();
>     eval_pv("use DynTrans;", FALSE);
>     perl_cleanup_module();
> 
> 
> The perl_setup_module creates the DynTrans.pm file, and the
> perl_cleanup_module deletes it, and this also works. However I don't
> like the fact of needing to drop a temporary file on the user's
> filesystem.
> 
> So, the question: Is there a way that I can make XSUBs availiable to my
> perl interpreter without having to have the .pm file around at all?  I
> tried building the entire .pm file into my application with a series of
> eval_pv() for every line, but of course that didn't work. 
> 
> What I would really like is a programatic interface into whatever the
> use DynTrans; perl stuff does. I have read and re-read perlembed,
> perlxs, perlguts, perlapi, perlcall, several perl books, forums,
> SuperSearch, etc. and I cannot find a way to do this. 

A module is just a namespace in Perl.  If you want to define functions in 
that namespace, do so explicitly.  Having said that, I'm not 100% sure 
what you are trying to accomplish...

Can you reword your explanation?

Steve

Reply via email to