diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2016-10-25 20:57:49 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2016-10-25 20:57:49 (GMT) |
commit | d1c4bf158203c4e8ec29fdeb83fd311e36320885 (patch) | |
tree | 15874534e282f67505ce4af5ba805a1ff70ec43e /funtools/tperl.c | |
parent | e19a18e035dc4d0e8e215f9b452bb9ef6f58b9d7 (diff) | |
parent | 339420dd5dd874c41f6bab5808291fb4036dd022 (diff) | |
download | blt-d1c4bf158203c4e8ec29fdeb83fd311e36320885.zip blt-d1c4bf158203c4e8ec29fdeb83fd311e36320885.tar.gz blt-d1c4bf158203c4e8ec29fdeb83fd311e36320885.tar.bz2 |
Merge commit '339420dd5dd874c41f6bab5808291fb4036dd022' as 'funtools'
Diffstat (limited to 'funtools/tperl.c')
-rw-r--r-- | funtools/tperl.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/funtools/tperl.c b/funtools/tperl.c new file mode 100644 index 0000000..485fafe --- /dev/null +++ b/funtools/tperl.c @@ -0,0 +1,39 @@ +/* + http://search.cpan.org/~nwclark/perl-5.8.7/pod/perlembed.pod + gcc -o tperl tperl.c `perl -MExtUtils::Embed -e ccopts -e ldopts` + */ + +#include <EXTERN.h> /* from the Perl distribution */ +#include <perl.h> /* from the Perl distribution */ + +static PerlInterpreter *my_perl; /*** The Perl interpreter ***/ + +int main(int argc, char **argv, char **env) +{ + STRLEN n_a; + char *embedding[] = { "", "-e", "0" }; + + PERL_SYS_INIT3(&argc,&argv,&env); + my_perl = perl_alloc(); + perl_construct( my_perl ); + + perl_parse(my_perl, NULL, 3, embedding, NULL); + PL_exit_flags |= PERL_EXIT_DESTRUCT_END; + perl_run(my_perl); + + /** Treat $a as an integer **/ + eval_pv("$a = 3; $a **= 2", TRUE); + printf("a = %d\n", SvIV(get_sv("a", FALSE))); + + /** Treat $a as a float **/ + eval_pv("$a = 3.14; $a **= 2", TRUE); + printf("a = %f\n", SvNV(get_sv("a", FALSE))); + + /** Treat $a as a string **/ + eval_pv("$a = 'rekcaH lreP rehtonA tsuJ'; $a = reverse($a);", TRUE); + printf("a = %s\n", SvPV(get_sv("a", FALSE), n_a)); + + perl_destruct(my_perl); + perl_free(my_perl); + PERL_SYS_TERM(); +} |