Created
September 10, 2014 08:02
-
-
Save knok/12788bd70a6721e7da4e to your computer and use it in GitHub Desktop.
An example code to call libperl from ruby using DL::Import
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# call libperl from ruby 1.9.x | |
require 'dl' | |
require 'dl/import' | |
require 'dl/struct' | |
require 'pp' | |
module Perl | |
extend DL::Importer | |
dlload "libperl.so" | |
extern "struct interpreter * perl_alloc(void)" | |
extern "void perl_construct(struct interpreter *)" | |
extern "int perl_parse(struct interpreter *, void *, int, char**, char**)" | |
extern "int perl_run(struct interpreter *)" | |
extern "int perl_destruct(struct interpreter *)" | |
extern "void perl_free(struct interpreter *)" | |
end | |
null = DL::CPtr.new(0); | |
perl = Perl.perl_alloc() | |
Perl.perl_construct(perl) | |
Perl.perl_parse(perl, null, 1, ["perl"].pack('p*'), null) | |
Perl.perl_run(perl) | |
Perl.perl_destruct(perl) | |
Perl.perl_free(perl) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment