in reply to Re: PerlPowerTools as single Windows executable
in thread PerlPowerTools as single Windows executable

Well, I'm afraid there's not much to show, but here are the 3 parts :

1. The script 'util/packer' calls PAR::Packer 'pp' to bundle all tools (and POD) as 'PerlPowerTools.exe' :

# build packed executable system( "pp", "-v", "-I", "lib", # include PerlPowerTools.pm, used for $VERSION "-F", $podstrip, # apply PodStrip but keep PerlPowerTools doc "-a", "$podfile;$packedpodfile", # include perldoc doc "-o", "$ppt_dir/packed/perlpowertools.exe", @tools ) == 0 or die "system failed: $?";

2. The "fake" tool '~/perlpowertools/bin/perlpowertools' is a frontend/dispatcher to execute the tool supplied as first argument, either from '~/perlpowertools/bin' or from the (extracted) bundle :

my $ppt_bin = defined $ENV{PAR_TEMP} ? "$ENV{PAR_TEMP}/inc/script" : d +irname(abs_path($0)); ... my $file = "$ppt_bin/$tool"; $0 = $tool; # for usage/warning/error messages my $return = do $file;

3. The "fake" tool '~/perlpowertools/bin/perldoc' is the real perldoc, but with a custom search path to find POD in '~/perlpowertools/bin' or in the (extracted) bundle :

# let perldoc also search in perlpowertools bin unshift @INC, dirname(abs_path(__FILE__));