1Inline-FAQ(3)         User Contributed Perl Documentation        Inline-FAQ(3)
2
3
4

NAME

6       Inline-FAQ - The Inline FAQ
7

DESCRIPTION

9       Welcome to the official Inline FAQ. In this case, FAQ means:
10
11           Formerly Answered Questions
12
13       This is a collection of old, long-winded emails that myself and others
14       have sent to the Inline mailing list. (inline@perl.org) They have been
15       reviewed and edited for general Inline edification. Some of them may be
16       related to a specific language. They are presented here in a
17       traditional FAQ layout.
18

General Inline

20       Since there is only a handful of content so far, all FAQs are currently
21       under this heading.
22
23   How disposable is a .Inline or _Inline directory?
24       I probably need to be more emphatic about the roll of _Inline/ cache
25       directories. Since they are created automatically, they are completely
26       disposable. I delete them all the time. And it is fine to have a
27       different one for each project. In fact as long as you don't have
28       ~/.Inline/ defined, Inline will create a new ./_Inline directory. You
29       can move that to ./.Inline and it will continue to work if you want to
30       give it more longevity and hide it from view. There is a long
31       complicated list of rules about how [_.]Inline/ directories are
32       used/created. But it was designed to give you the most
33       flexibility/ease-of-use. Never be afraid to nuke 'em. They'll just pop
34       right back next time. :)
35
36   Whatever happened to the SITE_INSTALL option?
37       SITE_INSTALL is gone. I was going to leave it in and change the
38       semantics, but thought it better to remove it, so people wouldn't try
39       to use it the old way. There is now _INSTALL_ (but you're not supposed
40       to know that :). It works magically through the use of
41       Inline::MakeMaker. I explained this earlier but it's worth going
42       through again because it's the biggest change for 0.40. Here's how to
43       'permanently' install an Inline extension (Inline based module) with
44       0.40:
45
46           1) Create a module with Inline.
47           2) Test it using the normal/local _Inline/ cache.
48           3) Create a Makefile.PL (like the one produced by h2xs)
49           4) Change 'use ExtUtils::MakeMaker' to 'use Inline::MakeMaker'
50           5) Change your 'use Inline C => DATA' to 'use Inline C => DATA => NAME
51              => Foo => VERSION => 1.23'
52           6) Make sure NAME matches your package name ('Foo'), or begins with
53              'Foo::'.
54           7) Make sure VERSION matches $Foo::VERSION. This must be a string (not a
55              number) matching /^\d\.\d\d$/
56           8) Do the perl/make/test/install dance (thanks binkley :)
57
58       With Inline 0.41 (or thereabouts) you can skip steps 3 & 4, and just
59       say 'perl -MInline=INSTALL ./Foo.pm'. This will work for non-Inline
60       modules too. It will become the defacto standard (since there is no
61       easy standard) way of installing a Perl module. It will allow
62       Makefile.PL parameters 'perl -MInline=INSTALL ./Foo.pm -
63       PREFIX=/home/ingy/perl' and things like that. It will also make use of
64       a MANIFEST if you provide one.
65
66   How do I create a binary distribution using Inline?
67       I've figured out how to create and install a PPM binary distribution;
68       with or without distributing the C code! And I've decided to share it
69       with all of you :)
70
71       NOTE: Future versions of Inline will make this process a one line
72       command. But for now just use this simple recipe.
73
74       ---
75
76       The Inline 0.40 distribution comes with a sample extension module
77       called Math::Simple. Theoretically you could distribute this module on
78       CPAN. It has all the necessary support for installation. You can find
79       it in Inline-0.40/modules/Math/Simple/. Here are the steps for
80       converting this into a binary distribution *without* C source code.
81
82       NOTE: The recipient of this binary distribution will need to have the
83       PPM.pm module installed. This module requires a lot of other CPAN
84       modules. ActivePerl (available for Win32, Linux, and Solaris) has all
85       of these bundled. While ActivePerl isn't required, it makes things (a
86       lot) easier.
87
88       1) cd Inline-0.40/Math/Simple/
89
90       2) Divide Simple.pm into two files:
91
92           ---8<--- (Simple.pm)
93           package Math::Simple;
94           use strict;
95           require Exporter;
96           @Math::Simple::ISA = qw(Exporter);
97           @Math::Simple::EXPORT = qw(add subtract);
98           $Math::Simple::VERSION = '1.23';
99
100           use Inline (C => 'src/Simple.c' =>
101                       NAME => 'Math::Simple',
102                       VERSION => '1.23',
103                      );
104           1;
105           ---8<---
106           ---8<--- (src/Simple.c)
107           int add (int x, int y) {
108               return x + y;
109           }
110
111           int subtract (int x, int y) {
112               return x - y;
113           }
114           ---8<---
115
116       So now you have the Perl in one file and the C in the other. The C code
117       must be in a subdirectory.
118
119       3) Note that I also changed the term 'DATA' to the name of the C file.
120       This will work just as if the C were still inline.
121
122       4) Run 'perl Makefile.PL'
123
124       5) Run 'make test'
125
126       6) Get the MD5 key from 'blib/arch/auto/Math/Simple/Simple.inl'
127
128       7) Edit 'blib/lib/Math/Simple.pm'. Change 'src/Simple.c' to
129       '02c61710cab5b659efc343a9a830aa73' (the MD5 key)
130
131       8) Run 'make ppd'
132
133       9) Edit 'Math-Simple.ppd'. Fill in AUTHOR and ABSTRACT if you wish.
134       Then change:
135
136           <CODEBASE HREF="" />
137
138       to
139
140           <CODEBASE HREF="Math-Simple.tar.gz" />
141
142       10) Run:
143
144           tar cvf Math-Simple.tar blib
145           gzip --best Math-Simple.tar
146
147       11) Run:
148
149           tar cvf Math-Simple-1.23.tar Math-Simple.ppd Math-Simple.tar.gz
150           gzip --best Math-Simple-1.23.tar
151
152       12) Distribute Math-Simple-1.23.tar.gz with the following instructions:
153
154       A) Run:
155
156           gzip -d Math-Simple-1.23.tar.gz
157           tar xvzf Math-Simple-1.23.tar
158
159       B) Run 'ppm install Math-Simple.ppd'
160
161       C) Delete Math-Simple.tar and Math-Simple.ppd.
162
163       D) Test with:
164
165           perl -MMath::Simple -le 'print add(37, 42)'
166
167       ---
168
169       That's it. The process should also work with zip instead of tar, but I
170       haven't tried it.
171
172       The recipient of the binary must have Perl built with a matching
173       architecture. Luckily, ppm will catch this.
174
175       For a binary dist *with* C source code, simply omit steps 2, 3, 6, and
176       7.
177
178       If this seems too hard, then in a future version you should be able to
179       just type:
180
181           make ppm
182
183
184
185perl v5.12.1                      2010-01-27                     Inline-FAQ(3)
Impressum