12.19.3 Discussion

Inline::C was created as an alternative to the XS system for building
C extension modules. Rather than jumping through all the hoopla of
h2xs and the format of an
.xs file, Inline::C lets you embed C code into
your Perl program. There are also Inline modules for Python, Ruby,
and Java, among other languages.

By default, your C source is in the _ _END_ _ or
_ _DATA_ _ section of your program after a
_ _C_ _ token. This permits multiple Inlined
language blocks in a single file. If you want, use a here document
when you load Inline:

Inline::C scans the source code for ANSI-style function definitions.
When it finds a function definition it knows how to deal with, it
creates a Perl wrapper for the function. Inline can automatically
translate the basic C data types (double,
int, char *, etc.) by using the
typemap that comes with Perl. A typemap shows
Perl how to convert between C values and Perl data types, and you can
install your own if you need to use more complex data structures than
the basic typemap supports.

You can link against external libraries, parse header files as
h2xs does, pass and return multiple values,
handle objects, and more. See the
Inline::C-Cookbook manpage that comes with the
Inline::C module for more details.

12.19.4 See Also

The documentation with the Inline::C module from CPAN; the
Inline::C-Cookbook manpage