Inline::Guile - Inline module for the GNU Guile Scheme interpreter


  use Inline::Guile => <<END;
     (define square (x) (* x x))

  my $answer = square(10); # returns 100


This module allows you to add blocks of Scheme code to your Perl scripts and modules. Any procedures you define in your Scheme code will be available in Perl.

For information about handling Guile data in Perl see Guile. This module is mostly a wrapper around Guile::eval_str() with a little auto-binding magic for procedures.

For details about the Inline interface, see Inline.


Error Messages

The error messages you get from this module are pretty useless. They don't mention anything about where they came from. This is something I will be addressing in the next release.

Procedure Binding

The module is pretty dumb about finding procedures to bind. It just scans through your code looking for things that might be a "(define foo ...)." It then trys a Guile::lookup() on "foo" and binds any resulting procedure. This is sufficient for simple cases but it won't catch module imports, macros that call define behind the scenes or any other such trickery. Any suggestions for improvement would be appreciated! Bugs is in an early alpha state. It has some pretty nasty bugs that you should know about if you're using Inline::Guile. Check out the BUGS section in the docs.


This project is just starting and the more people that get involved the better. For the time being we can use the Inline mailing-list to get organized. Send a blank message to to join the list.

If you just want to report a bug (just one?) or tell how sick the whole idea makes you then you can email me directly at




Inline::Guile : Inline module for the GNU Guile Scheme interpreter Copyright (C) 2001 Sam Tregar (

This module is free software; you can redistribute it and/or modify it under the terms of either:

a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or

b) the "Artistic License" which comes with this module.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the GNU General Public License or the Artistic License for more details.

You should have received a copy of the Artistic License with this module, in the file ARTISTIC. If not, I'll be glad to provide one.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


Sam Tregar,


Guile, Inline