No subject
Thu Mar 26 00:47:06 EDT 2009
install as nicely as perl, or that it is complex to compile/link plt
code compared to perl.)
======================================================================
(require (lib "foreign.ss"))
(define libperl
(ffi-lib "/usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE/libperl.so"))
(define interp ((get-ffi-obj "perl_alloc" libperl (_fun -> _pointer))))
((get-ffi-obj "perl_construct" libperl (_fun _pointer -> _void)) interp)
((get-ffi-obj "perl_parse" libperl
(_fun _pointer _pointer _int (_list i _string) _pointer -> _void))
interp #f 3 '("" "-e" "0") #f)
((get-ffi-obj "perl_run" libperl (_fun _pointer -> _int)) interp)
(define perl-eval
(get-ffi-obj "Perl_eval_pv" libperl
(_fun _pointer _string (_bool = #t) -> _pointer)))
(define perl->bytes
(get-ffi-obj "Perl_sv_2pvutf8" libperl
(_fun _pointer _pointer (len : (_ptr o _int))
-> (_bytes o len))))
(define perl-call
(get-ffi-obj "Perl_call_sv" libperl
(_fun _pointer _pointer _int -> _int)))
(define (perl-eval/string str)
(bytes->string/utf-8 (perl->bytes interp (perl-eval interp str))))
(define (perl-eval/proc str)
(let ([pp (perl-eval interp str)])
(lambda () (perl-call interp pp 0))))
(perl-eval/string "$a = 3; $a **= 2")
(perl-eval/proc "sub { print \"FOO\\n\"; }")
======================================================================
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!
More information about the plt-scheme
mailing list