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. Can anyone save me from the dreaded .pm file? Thanks in advance. _____________________________________________________________________ This email message, including any attachments, may contain confidential and proprietary information for the sole use of the intended recipient. If you are not the intended recipient, you are hereby notified that any use, copying or dissemination of this message is strictly prohibited. If you received this message in error, please notify Brooks Automation, Inc. immediately by reply email or by calling Brooks US Headquarters at +1 978-262-2400. Then delete this message from your system, without making any copy or distribution. Thank you.