App-Staticperl
view release on metacpan or search on metacpan
* The generated executables don't need a writable filesystem.
staticperl loads all required files directly from memory. There is
no need to unpack files into a temporary directory.
* More control over included files, more burden.
PAR tries to be maintenance and hassle-free - it tries to include
more files than necessary to make sure everything works out of the
box. It mostly succeeds at this, but he extra files (such as the
unicode database) can take substantial amounts of memory and file
size.
With staticperl, the burden is mostly with the developer - only
direct compile-time dependencies and AutoLoader are handled
automatically. This means the modules to include often need to be
tweaked manually.
All this does not preclude more permissive modes to be implemented
in the future, but right now, you have to resolve hidden
dependencies manually.
match any .pm and .pl files against the extended glob pattern
(see below). If a file matches, it is added. The pattern is
matched against the full path of the file (sans the library
directory prefix), e.g. Sys/Syslog.pm.
This is very useful to include "everything":
--incglob '*'
It is also useful for including perl libraries, or trees of
those, such as the unicode database files needed by some perl
built-ins, the regex engine and other modules.
--incglob '/unicore/**.pl'
"--add" file | "--add" "file alias"
Adds the given (perl) file into the bundle (and optionally call
it "alias"). The file is either an absolute path or a path
relative to the current directory. If an alias is specified,
then this is the name it will use for @INC searches, otherwise
the path file will be used as the internal name.
run your binaries on on other kernels.
RECIPES / SPECIFIC MODULES
This section contains some common(?) recipes and information about
problems with some common modules or perl constructs that require extra
files to be included.
MODULES
utf8
Some functionality in the utf8 module, such as swash handling (used
for unicode character ranges in regexes) is implemented in the
"utf8_heavy.pl" library:
-Mutf8_heavy.pl
Many Unicode properties in turn are defined in separate modules,
such as "unicore/Heavy.pl" and more specific data tables such as
"unicore/To/Digit.pl" or "unicore/lib/Perl/Word.pl". These tables
are big (7MB uncompressed, although staticperl contains special
handling for those files), so including them only on demand in your
application might pay off.
To simply include the whole unicode database, use:
--incglob '/unicore/**.pl'
AnyEvent
AnyEvent needs a backend implementation that it will load in a
delayed fashion. The AnyEvent::Impl::Perl backend is the default
choice for AnyEvent if it can't find anything else, and is usually a
safe fallback. If you plan to use e.g. EV (POE...), then you need to
include the AnyEvent::Impl::EV (AnyEvent::Impl::POE...) backend as
well.
bin/staticperl view on Meta::CPAN
=item * The generated executables don't need a writable filesystem.
F<staticperl> loads all required files directly from memory. There is no
need to unpack files into a temporary directory.
=item * More control over included files, more burden.
PAR tries to be maintenance and hassle-free - it tries to include more
files than necessary to make sure everything works out of the box. It
mostly succeeds at this, but he extra files (such as the unicode database)
can take substantial amounts of memory and file size.
With F<staticperl>, the burden is mostly with the developer - only direct
compile-time dependencies and L<AutoLoader> are handled automatically.
This means the modules to include often need to be tweaked manually.
All this does not preclude more permissive modes to be implemented in
the future, but right now, you have to resolve hidden dependencies
manually.
bin/staticperl view on Meta::CPAN
This goes through all standard library directories and tries to match any
F<.pm> and F<.pl> files against the extended glob pattern (see below). If
a file matches, it is added. The pattern is matched against the full path
of the file (sans the library directory prefix), e.g. F<Sys/Syslog.pm>.
This is very useful to include "everything":
--incglob '*'
It is also useful for including perl libraries, or trees of those, such as
the unicode database files needed by some perl built-ins, the regex engine
and other modules.
--incglob '/unicore/**.pl'
=item C<--add> F<file> | C<--add> "F<file> alias"
Adds the given (perl) file into the bundle (and optionally call it
"alias"). The F<file> is either an absolute path or a path relative to the
current directory. If an alias is specified, then this is the name it will
use for C<@INC> searches, otherwise the path F<file> will be used as the
bin/staticperl view on Meta::CPAN
problems with some common modules or perl constructs that require extra
files to be included.
=head2 MODULES
=over 4
=item utf8
Some functionality in the utf8 module, such as swash handling (used
for unicode character ranges in regexes) is implemented in the
C<"utf8_heavy.pl"> library:
-Mutf8_heavy.pl
Many Unicode properties in turn are defined in separate modules,
such as C<"unicore/Heavy.pl"> and more specific data tables such as
C<"unicore/To/Digit.pl"> or C<"unicore/lib/Perl/Word.pl">. These tables
are big (7MB uncompressed, although F<staticperl> contains special
handling for those files), so including them only on demand in your
application might pay off.
To simply include the whole unicode database, use:
--incglob '/unicore/**.pl'
=item AnyEvent
AnyEvent needs a backend implementation that it will load in a delayed
fashion. The L<AnyEvent::Impl::Perl> backend is the default choice
for AnyEvent if it can't find anything else, and is usually a safe
fallback. If you plan to use e.g. L<EV> (L<POE>...), then you need to
include the L<AnyEvent::Impl::EV> (L<AnyEvent::Impl::POE>...) backend as
staticperl.pod view on Meta::CPAN
=item * The generated executables don't need a writable filesystem.
F<staticperl> loads all required files directly from memory. There is no
need to unpack files into a temporary directory.
=item * More control over included files, more burden.
PAR tries to be maintenance and hassle-free - it tries to include more
files than necessary to make sure everything works out of the box. It
mostly succeeds at this, but he extra files (such as the unicode database)
can take substantial amounts of memory and file size.
With F<staticperl>, the burden is mostly with the developer - only direct
compile-time dependencies and L<AutoLoader> are handled automatically.
This means the modules to include often need to be tweaked manually.
All this does not preclude more permissive modes to be implemented in
the future, but right now, you have to resolve hidden dependencies
manually.
staticperl.pod view on Meta::CPAN
This goes through all standard library directories and tries to match any
F<.pm> and F<.pl> files against the extended glob pattern (see below). If
a file matches, it is added. The pattern is matched against the full path
of the file (sans the library directory prefix), e.g. F<Sys/Syslog.pm>.
This is very useful to include "everything":
--incglob '*'
It is also useful for including perl libraries, or trees of those, such as
the unicode database files needed by some perl built-ins, the regex engine
and other modules.
--incglob '/unicore/**.pl'
=item C<--add> F<file> | C<--add> "F<file> alias"
Adds the given (perl) file into the bundle (and optionally call it
"alias"). The F<file> is either an absolute path or a path relative to the
current directory. If an alias is specified, then this is the name it will
use for C<@INC> searches, otherwise the path F<file> will be used as the
staticperl.pod view on Meta::CPAN
problems with some common modules or perl constructs that require extra
files to be included.
=head2 MODULES
=over 4
=item utf8
Some functionality in the utf8 module, such as swash handling (used
for unicode character ranges in regexes) is implemented in the
C<"utf8_heavy.pl"> library:
-Mutf8_heavy.pl
Many Unicode properties in turn are defined in separate modules,
such as C<"unicore/Heavy.pl"> and more specific data tables such as
C<"unicore/To/Digit.pl"> or C<"unicore/lib/Perl/Word.pl">. These tables
are big (7MB uncompressed, although F<staticperl> contains special
handling for those files), so including them only on demand in your
application might pay off.
To simply include the whole unicode database, use:
--incglob '/unicore/**.pl'
=item AnyEvent
AnyEvent needs a backend implementation that it will load in a delayed
fashion. The L<AnyEvent::Impl::Perl> backend is the default choice
for AnyEvent if it can't find anything else, and is usually a safe
fallback. If you plan to use e.g. L<EV> (L<POE>...), then you need to
include the L<AnyEvent::Impl::EV> (L<AnyEvent::Impl::POE>...) backend as
( run in 0.322 second using v1.01-cache-2.11-cpan-88abd93f124 )