.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\" ========================================================================
.de Sh \" Subsection heading
.de Sp \" Vertical space (when we can't use .PP)
.de Vb \" Begin verbatim text
.de Ve \" End verbatim text
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. | will give a
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
. tm Index:\\$1\t\\n%\t"\\$2"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. \" simple accents for nroff and troff
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
.\" ========================================================================
.TH Inline-FAQ 3 "2002-10-28" "perl v5.8.0" "User Contributed Perl Documentation"
Inline\-FAQ \- The Inline FAQ
Welcome to the official Inline \s-1FAQ\s0. In this case, \fB\s-1FAQ\s0\fR means:
\& Formerly Answered Questions
This is a collection of old, long-winded emails that myself and others
have sent to the Inline mailing list. (inline@perl.org) They have been
reviewed and edited for general Inline edification. Some of them may be
related to a specific language. They are presented here in a traditional
.IX Header "General Inline"
Since there is only a handful of content so far, all FAQs are currently
.Sh "How disposable is a .Inline or _Inline directory?"
.IX Subsection "How disposable is a .Inline or _Inline directory?"
I probably need to be more emphatic about the roll of _Inline/ cache
directories. Since they are created automatically, they are completely
disposable. I delete them all the time. And it is fine to have a
different one for each project. In fact as long as you don't have
~/.Inline/ defined, Inline will create a new ./_Inline directory. You
can move that to ./.Inline and it will continue to work if you want to
give it more longevity and hide it from view. There is a long
complicated list of rules about how [_.]Inline/ directories are
used/created. But it was designed to give you the most
flexibility/ease\-of\-use. Never be afraid to nuke 'em. They'll just pop
.Sh "Whatever happened to the \s-1SITE_INSTALL\s0 option?"
.IX Subsection "Whatever happened to the SITE_INSTALL option?"
\&\s-1SITE_INSTALL\s0 is gone. I was going to leave it in and change the
semantics, but thought it better to remove it, so people wouldn't try to
use it the old way. There is now _INSTALL_ (but you're not supposed to
know that :). It works magically through the use of Inline::MakeMaker. I
explained this earlier but it's worth going through again because it's
the biggest change for 0.40. Here's how to 'permanently' install an
Inline extension (Inline based module) with 0.40:
\& 1) Create a module with Inline.
\& 2) Test it using the normal/local _Inline/ cache.
\& 3) Create a Makefile.PL (like the one produced by h2xs)
\& 4) Change 'use ExtUtils::MakeMaker' to 'use Inline::MakeMaker'
\& 5) Change your 'use Inline C => DATA' to 'use Inline C => DATA => NAME
\& => Foo => VERSION => 1.23'
\& 6) Make sure NAME matches your package name ('Foo'), or begins with
\& 7) Make sure VERSION matches $Foo::VERSION. This must be a string (not a
\& number) matching /^\ed\e.\ed\ed$/
\& 8) Do the perl/make/test/install dance (thanks binkley :)
With Inline 0.41 (or thereabouts) you can skip steps 3 & 4, and just
say 'perl \-MInline=INSTALL ./Foo.pm'. This will work for non-Inline
modules too. It will become the defacto standard (since there is no easy
standard) way of installing a Perl module. It will allow Makefile.PL
parameters 'perl \-MInline=INSTALL ./Foo.pm \- PREFIX=/home/ingy/perl' and
things like that. It will also make use of a \s-1MANIFEST\s0 if you provide
.Sh "How do I create a binary distribution using Inline?"
.IX Subsection "How do I create a binary distribution using Inline?"
I've figured out how to create and install a \s-1PPM\s0 binary distribution;
with or without distributing the C code! And I've decided to share it
\&\s-1NOTE:\s0 Future versions of Inline will make this process a one line
command. But for now just use this simple recipe.
The Inline 0.40 distribution comes with a sample extension module called
Math::Simple. Theoretically you could distribute this module on \s-1CPAN\s0. It
has all the necessary support for installation. You can find it in
Inline\-0.40/modules/Math/Simple/. Here are the steps for converting this
into a binary distribution *without* C source code.
\&\s-1NOTE:\s0 The recipient of this binary distribution will need to have the
\&\s-1PPM\s0.pm module installed. This module requires a lot of other \s-1CPAN\s0
modules. ActivePerl (available for Win32, Linux, and Solaris) has all of
these bundled. While ActivePerl isn't required, it makes things (a
1) cd Inline\-0.40/Math/Simple/
2) Divide Simple.pm into two files:
\& @Math::Simple::ISA = qw(Exporter);
\& @Math::Simple::EXPORT = qw(add subtract);
\& $Math::Simple::VERSION = '1.23';
\& use Inline (C => 'src/Simple.c' =>
\& NAME => 'Math::Simple',
\& ---8<--- (src/Simple.c)
\& int add (int x, int y) {
\& int subtract (int x, int y) {
So now you have the Perl in one file and the C in the other. The C code
must be in a subdirectory.
Note that I also changed the term '\s-1DATA\s0' to the name of the C file. This
will work just as if the C were still inline.
4) Run 'perl Makefile.PL'
6) Get the \s-1MD5\s0 key from 'blib/arch/auto/Math/Simple/Simple.inl'
Edit 'blib/lib/Math/Simple.pm'. Change 'src/Simple.c' to
\&'02c61710cab5b659efc343a9a830aa73' (the \s-1MD5\s0 key)
Edit 'Math\-Simple.ppd'. Fill in \s-1AUTHOR\s0 and \s-1ABSTRACT\s0 if you wish. Then
\& <CODEBASE HREF="Math-Simple.tar.gz" />
\& tar cvf Math-Simple.tar blib
\& gzip --best Math-Simple.tar
\& tar cvf Math-Simple-1.23.tar Math-Simple.ppd Math-Simple.tar.gz
\& gzip --best Math-Simple-1.23.tar
12) Distribute Math\-Simple\-1.23.tar.gz with the following instructions:
\& gzip -d Math-Simple-1.23.tar.gz
\& tar xvzf Math-Simple-1.23.tar
B) Run 'ppm install Math\-Simple.ppd'
C) Delete Math\-Simple.tar and Math\-Simple.ppd.
\& perl -MMath::Simple -le 'print add(37, 42)'
That's it. The process should also work with zip instead of tar, but I
The recipient of the binary must have Perl built with a matching
architecture. Luckily, ppm will catch this.
For a binary dist *with* C source code, simply omit steps 2, 3, 6, and
If this seems too hard, then in a future version you should be able to