in reply to Re^4: packaging perl
in thread packaging perl

% pp -I /foo hello          # Extra include paths

ModuleA.pm does not look like an include path :)

However, pp still manages to pack both ModuleA.pm and ModuleB.pm , even if moduleB.pm is packed as another script

$ unzip -dworks start Archive: start creating: works/lib/ creating: works/script/ inflating: works/MANIFEST inflating: works/META.yml inflating: works/lib/Carp.pm inflating: works/lib/Config.pm inflating: works/lib/Config_git.pl inflating: works/lib/Config_heavy.pl inflating: works/lib/DynaLoader.pm inflating: works/lib/Exporter.pm inflating: works/lib/Exporter/Heavy.pm inflating: works/lib/File/Glob.pm inflating: works/lib/List/Util.pm inflating: works/lib/Scalar/Util.pm inflating: works/lib/Time/HiRes.pm inflating: works/lib/XSLoader.pm extracting: works/lib/auto/File/Glob/Glob.bs inflating: works/lib/auto/File/Glob/Glob.dll extracting: works/lib/auto/List/Util/Util.bs inflating: works/lib/auto/List/Util/Util.dll extracting: works/lib/auto/Time/HiRes/HiRes.bs inflating: works/lib/auto/Time/HiRes/HiRes.dll extracting: works/lib/auto/mro/mro.bs inflating: works/lib/auto/mro/mro.dll extracting: works/lib/auto/threads/threads.bs inflating: works/lib/auto/threads/threads.dll inflating: works/lib/feature.pm inflating: works/lib/moduleA.pm ###### inflating: works/lib/moduleB.pm ###### inflating: works/lib/mro.pm inflating: works/lib/overload.pm inflating: works/lib/overload/numbers.pm inflating: works/lib/overloading.pm inflating: works/lib/strict.pm inflating: works/lib/threads.pm inflating: works/lib/vars.pm inflating: works/lib/warnings.pm inflating: works/lib/warnings/register.pm inflating: works/script/ModuleB.pm ###### inflating: works/script/main.pl inflating: works/script/start.pl

This is what is normally typed

$ pp -x start.pl -o start $ unzip -dworksalot start Archive: start creating: worksalot/lib/ creating: worksalot/script/ inflating: worksalot/MANIFEST inflating: worksalot/META.yml inflating: worksalot/lib/Benchmark.pm inflating: worksalot/lib/Carp.pm inflating: worksalot/lib/Config.pm inflating: worksalot/lib/Config_git.pl inflating: worksalot/lib/Config_heavy.pl inflating: worksalot/lib/Data/Dump.pm inflating: worksalot/lib/DynaLoader.pm inflating: worksalot/lib/Exporter.pm inflating: worksalot/lib/Exporter/Heavy.pm inflating: worksalot/lib/File/Glob.pm inflating: worksalot/lib/List/Util.pm inflating: worksalot/lib/Scalar/Util.pm inflating: worksalot/lib/Time/HiRes.pm inflating: worksalot/lib/XSLoader.pm extracting: worksalot/lib/auto/File/Glob/Glob.bs inflating: worksalot/lib/auto/File/Glob/Glob.dll extracting: worksalot/lib/auto/List/Util/Util.bs inflating: worksalot/lib/auto/List/Util/Util.dll extracting: worksalot/lib/auto/Time/HiRes/HiRes.bs inflating: worksalot/lib/auto/Time/HiRes/HiRes.dll extracting: worksalot/lib/auto/mro/mro.bs inflating: worksalot/lib/auto/mro/mro.dll extracting: worksalot/lib/auto/threads/threads.bs inflating: worksalot/lib/auto/threads/threads.dll inflating: worksalot/lib/feature.pm inflating: worksalot/lib/moduleA.pm inflating: worksalot/lib/moduleB.pm inflating: worksalot/lib/mro.pm inflating: worksalot/lib/overload.pm inflating: worksalot/lib/overload/numbers.pm inflating: worksalot/lib/overloading.pm inflating: worksalot/lib/sitecustomize.pl inflating: worksalot/lib/strict.pm inflating: worksalot/lib/subs.pm inflating: worksalot/lib/threads.pm inflating: worksalot/lib/vars.pm inflating: worksalot/lib/warnings.pm inflating: worksalot/lib/warnings/register.pm inflating: worksalot/script/main.pl inflating: worksalot/script/start.pl
If for some reason . is not in @INC its
$ pp -I . -x start.pl -o start

My test files in the form of a patch (apply with patch -p0 -i my.patch )

diff -ruN empty/2 parppworks/2 --- empty/2 1969-12-31 16:00:00.000000000 -0800 +++ parppworks/2 2014-06-20 01:18:17.953125000 -0700 @@ -0,0 +1,40 @@ +diff -ruN empty/moduleA.pm ./moduleA.pm +--- empty/moduleA.pm 1969-12-31 16:00:00.000000000 -0800 ++++ ./moduleA.pm 2014-06-20 01:11:36.671875000 -0700 +@@ -0,0 +1,2 @@ ++sub moduleA::functionA { print "moduleA::functionA\n" } ++1; +\ No newline at end of file +diff -ruN empty/moduleB.pm ./moduleB.pm +--- empty/moduleB.pm 1969-12-31 16:00:00.000000000 -0800 ++++ ./moduleB.pm 2014-06-20 01:11:45.343750000 -0700 +@@ -0,0 +1,3 @@ ++sub moduleB::functionA { print "moduleB::functionA\n" } ++sub moduleB::functionB { print "moduleB::functionB\n" } ++1; +\ No newline at end of file +diff -ruN empty/start.pl ./start.pl +--- empty/start.pl 1969-12-31 16:00:00.000000000 -0800 ++++ ./start.pl 2014-06-20 01:15:31.671875000 -0700 +@@ -0,0 +1,21 @@ ++#!/usr/bin/perl ++ ++use strict; ++use warnings; ++use Time::HiRes qw(usleep); ++ ++ ++require moduleA; ++require moduleB; ++ ++ ++&moduleA::functionA(); ++ ++&moduleB::functionA(); ++ ++&moduleB::functionB(); ++ ++__END__ ++pp start.pl -I ModuleA.pm ModuleB.pm -o start ++pp -I. -x start.pl -o start ++ diff -ruN empty/moduleA.pm parppworks/moduleA.pm --- empty/moduleA.pm 1969-12-31 16:00:00.000000000 -0800 +++ parppworks/moduleA.pm 2014-06-20 01:18:47.859375000 -0700 @@ -0,0 +1,2 @@ +sub moduleA::functionA { print "moduleA::functionA\n" } +1; diff -ruN empty/moduleB.pm parppworks/moduleB.pm --- empty/moduleB.pm 1969-12-31 16:00:00.000000000 -0800 +++ parppworks/moduleB.pm 2014-06-20 01:18:49.218750000 -0700 @@ -0,0 +1,3 @@ +sub moduleB::functionA { print "moduleB::functionA\n" } +sub moduleB::functionB { print "moduleB::functionB\n" } +1; diff -ruN empty/start.pl parppworks/start.pl --- empty/start.pl 1969-12-31 16:00:00.000000000 -0800 +++ parppworks/start.pl 2014-06-20 01:15:31.671875000 -0700 @@ -0,0 +1,21 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use Time::HiRes qw(usleep); + + +require moduleA; +require moduleB; + + +&moduleA::functionA(); + +&moduleB::functionA(); + +&moduleB::functionB(); + +__END__ +pp start.pl -I ModuleA.pm ModuleB.pm -o start +pp -I. -x start.pl -o start +