Home > Archive > PERL Miscellaneous > April 2005 > Adding Perl Core functions
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Adding Perl Core functions
|
|
| Guenther Sohler 2005-04-22, 8:56 pm |
| 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
rds
| |
| Mark Clements 2005-04-22, 8:56 pm |
| Guenther Sohler wrote:
> 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
Read the documentation for xs.
man perlxs
Mark
| |
| Jim Gibson 2005-04-22, 8:56 pm |
| In article <pan.2005.04.22.20.57.26.596993@newlogic.com>, Guenther
Sohler <guenther.sohler@newlogic.com> wrote:
> 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
Read 'perldoc perlxs'
----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----
| |
| Sherm Pendley 2005-04-23, 3:57 am |
| Mark Clements wrote:
> Guenther Sohler wrote:
>
>
> Read the documentation for xs.
>
> man perlxs
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".
sherm--
--
Cocoa programming in Perl: http://camelbones.sourceforge.net
Hire me! My resume: http://www.dot-app.org
| |
| Sisyphus 2005-04-23, 3:57 am |
|
"Guenther Sohler" <guenther.sohler@newlogic.com> wrote in message
news:pan.2005.04.22.20.57.26.596993@newlogic.com...
> 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
>
As an alternative to the xs approach, take a look at the Inline::C module.
See 'perldoc Inline::C-Cookbook' and 'perldoc Inline::C'.
Cheers,
Rob
| |
| Guenther Sohler 2005-04-25, 3:58 am |
| Hallo Rob, ( and all the Others).
Defintely I will have a look at the Inline::C Routine.
At the w end 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
program
* 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
called
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:
>
> "Guenther Sohler" <guenther.sohler@newlogic.com> wrote in message
> news:pan.2005.04.22.20.57.26.596993@newlogic.com...
>
> As an alternative to the xs approach, take a look at the Inline::C module.
> See 'perldoc Inline::C-Cookbook' and 'perldoc Inline::C'.
>
> Cheers,
> Rob
| |
| Ilya Zakharevich 2005-04-28, 3:59 am |
| [A complimentary Cc of this posting was sent to
Guenther Sohler
<guenther.sohler@newlogic.com>], who wrote in article <pan.2005.04.25.05.09.30.716067@newlogic.com>:
> Unfortunately the XS Approach did not really fit into my concept.
> Using XS sounded like creating an extra, external Module for perl.
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()
(sp?).
But usually no Perl part is required at all; see how UNIVERSAL::*
methods are implemented in Perl proper.
Hope this helps,
Ilya
|
|
|
|
|