Adding Perl Core functions

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

Hallo, I was able to integrate embedded perl into my c program.
So I am able to call perl scripts from within my program.
Now I want to call c routines from within the perl code.
How can I do so ? I have to add an extra function to perl


Re: Adding Perl Core functions

Quoted text here. Click to load it

Read 'perldoc perlxs'

----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet News==---- The #1 Newsgroup Service in the World! 120,000+
----= East and West-Coast Server Farms - Total Privacy via Encryption =----

Re: Adding Perl Core functions

Guenther Sohler wrote:
Quoted text here. Click to load it

Read the documentation for xs.

man perlxs


Re: Adding Perl Core functions

Mark Clements wrote:
Quoted text here. Click to load it

Also, "perldoc perlxstut" for an XS tutorial.

And, "perldoc perl" has a section that lists a number of relevant docs,
titled "Internals and C Language Interface".


Cocoa programming in Perl:
Hire me! My resume:

Re: Adding Perl Core functions

Quoted text here. Click to load it

As an alternative to the xs approach, take a look at the Inline::C module.
See 'perldoc Inline::C-Cookbook' and 'perldoc Inline::C'.


Re: Adding Perl Core functions

Hallo Rob, ( and all the Others).
Defintely I will have a look at the Inline::C Routine.
At the weekend I had a look at the XS Approch(without beeing able to read
the newsgroup before.
Unfortunately the XS Approach did not really fit into my concept.
Using XS sounded like creating an extra, external Module for perl.

My Intent is following:
* I have a C program with an embedded perl interpreter
* I want to use the perl interpreter to have a scripting language for my
* But I want to have special program-related perl commands that act on
 my programs database. If I did not want this I could use a normal perl
 interpreter from the beginning
* Therefore I somehow want to register C- callback functions under a
 dedicated perl function name.

I have written a c callback function, which draws a rectangle. It is
draw_rectangle. Then I instanciate a perl interpreter in my C program.
Then I want instruct !!!! "C" !!!! to register the callback function as
a new perl_command "draw_rectangle".
Finally I instruct the perl interpreter to execute a script from a file.
I dont mind, if the c callback functio has to evaluate the perl stack,
but It would be fine, if my function was registered in the main
namespace(no :: in function name) and if there were no measures in the
perl program to load the draw_rectangle from an external module).

There are to reasons why I dont want my "draw_rectangle" from an external
perl module
*    I dont want to keep my program as simple as possible - No extra
    files if possible
*    I fear, that the extern module is not able anymore to access the
    program database as it is seperated from the main program

Who has the perfect solution for me ?

On Sat,
23 Apr 2005 11:33:47 +1000, Sisyphus wrote:

Quoted text here. Click to load it

Re: Adding Perl Core functions

[A complimentary Cc of this posting was sent to
Guenther Sohler
Quoted text here. Click to load it

Not necessarily.  First, debug it as an external module.  Then, when
things work, compile the C part into your executable.  Eval the Perl
part (if needed) from your start-perl shim before doing perl_run()

But usually no Perl part is required at all; see how UNIVERSAL::*
methods are implemented in Perl proper.

Hope this helps,

Site Timeline