Inline.pm makes it easy to *extend* Perl with C. But what about
embedding Perl in C? As I thought about this problem I came up with an
entirely new programming language: CPR (C Perl Run). CPR is just like C
except that you have access to the entire internals of Perl using either
the Perl5 API, or the CPR API. Here is a 'Hello World' program in CPR:

-----------------------------------8<----------------------------------------
#!/usr/bin/cpr

int main(void) {
    printf("Hello World, I'm running under Perl version %s\n",
           CPR_eval("use Config; $Config{version}"));
    return 0;
}
-----------------------------------8<---------------------------------------- 

Yup, you guessed it, run the code under the CPR interpreter (hashbang
style or not) and your C code gets compiled/run seamlessly just like
with Inline!

This is embedding turned inside out. You run 'cpr' which execs 'perl'
which uses 'Inline::CPR' which binds and invokes 'main'. So your whole C
program is really just a Perl extension. By rights, this gives you full
access to the Perl5 API. And if you wrap that with a nice clean 'CPR_'
set of macros, you kind of get a new language. Don't you? :-)

I wish to distribute this as Inline::CPR. Here is the DSLI info:

Inline::CPR  adpO  Simple way to embed Perl in C ala Inline  INGY

-- 
perl -le 'use Inline C=>q{SV*JAxH(char*x){return newSVpvf
("Just Another %s Hacker",x);}};print JAxH+Perl'

Reply via email to