PrePAN

Sign in to PrePAN

App::FatPacker::Simple only fatpack a script

Good

Synopsis

$ fatpack-simple script.pl

Description

App::FatPacker::Simple or its frontend fatpack-simple helps you fatpack a script when YOU understand the whole dependencies of it.

MOTIVATION

App::FatPacker::Simple is a subclass of App::FatPacker. Let me explain why I wrote this module.

App::FatPacker brings more portability to Perl, that is totally awesome.

As far as I understand, App::FatPacker does 3 things: (a) trace dependencies for a script, (b) collects dependencies to fatlib directory and (c) fatpack the script with modules in fatlib.

As for (a), I often encountered problems. For example, modules that I don't want to trace trace, conversely, modules that I DO want to trace do not trace. Moreover a module changes interfaces recently, so we have to fatpack that module with new version, etc. So I think if you author intend to fatpack a script, YOU need to understand the whole dependencies of it.

As for (b), to locate modules in a directory, why don't you use carton or cpanm?

So the rest is (c) to fatpack a script with modules in directories, on which App::FatPacker::Simple concentrates.

That is, App::FatPacker::Simple only fatpacks a script with features:

  • automatically perl-strip modules
  • has option to exclude some modules

QUESTION

  • Can I use App::FatPacker namespace? If not, what name do you recommend?
  • Have you have problems with App::FatPacker? If so, is this module useful for you?
  • Any feedback is welcome.

Thanks.

Comments

This module is very useful for me. I used it for App::LJ. I want you to upload it to CPAN.

However, It might be better to change module name App::Fatpacker::Easy or so.
"Simple" feels me yet another implementation of the original module.

This module is not a another implementation, but a wrapper.
@Songmu I'm very pleased to hear that this module is useful for you!

About the "Simple" word.
I searched metacpan by "Simple": https://metacpan.org/search?q=Simple
Then it seems that "Simple" is used for both "yet another implementation" and
"wrapper or simple interface of a existing module":

For "yet another implementation":

* Email::Simple
* Router::Simple
* Data::Section::Simple

For "wrapper or simple interface of a existing module":

* DBIx::Simple (DBI)
* LWP::Simple (LWP::UserAgent)
* XML::Simple (XML::SAX, XML::Parser)

So I think it may be okay to use "Simple" for "wrapper or simple interface of a existing module".
And personally, I prefer App::FatPacker::Simple to App::FatPacker::Easy :-)

I really appreciate your comment, thank you @Songmu!
Just a note here, there's also another app called App::fatten which can also do this:

% fatten -t none --include-from fatlib INPUT OUTPUT

This command tells fatten not to trace the script (-t none) and only grabs modules from a dir (--include-from fatlib). fatten can also exclude modules (--exclude, --exclude-dist) and strip files (either using Perl::Strip, Perl::Stripper, Perl::Squish).

Please sign up to post a review.