X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FApp%2FFatPacker.pm;h=653a2480de04eb4e72e834217f942b66531b77f1;hb=0858ab66aa74dba45191596ee7b33838e208d911;hp=01aed5ecf01103df589cce4981a4686e78120bb1;hpb=cbd99f493bf60a856656f4d6b8658ced3f4aaeb1;p=p5sagit%2FApp-FatPacker.git diff --git a/lib/App/FatPacker.pm b/lib/App/FatPacker.pm index 01aed5e..653a248 100644 --- a/lib/App/FatPacker.pm +++ b/lib/App/FatPacker.pm @@ -14,7 +14,7 @@ use File::Copy qw(copy); use File::Path qw(mkpath rmtree); use B qw(perlstring); -our $VERSION = '0.009009'; # 0.9.9 +our $VERSION = '0.009013'; # 0.9.013 $VERSION = eval $VERSION; @@ -196,6 +196,7 @@ sub script_command_file { $files{File::Spec::Unix->abs2rel($File::Find::name,$dir)} = do { local (@ARGV, $/) = ($File::Find::name); <> }; + close ARGV; }, $dir); } my $start = stripspace <<' END_START'; @@ -209,6 +210,14 @@ sub script_command_file { unshift @INC, sub { if (my $fat = $fatpacked{$_[1]}) { + if ($] < 5.008) { + return sub { + return 0 unless length $fat; + $fat =~ s/^([^\n]*\n?)//; + $_ = $1; + return 1; + }; + } open my $fh, '<', \$fat or die "FatPacker error loading $_[1] (could be a perl installation issue?)"; return $fh; @@ -225,9 +234,23 @@ sub script_command_file { '$fatpacked{'.perlstring($_).qq!} = <<'${name}';\n! .qq!${data}${name}\n!; } sort keys %files; - print join "\n", $start, @segments, $end; + my $shebang = ""; + my $script = ""; + if ( defined $file and -r $file ) { + open my $fh, "<", $file or die("Can't read $file: $!"); + $shebang = <$fh>; + $script = join "", <$fh>; + close $fh; + unless ( index($shebang, '#!') == 0 ) { + $script = $shebang . $script; + $shebang = ""; + } + } + print join "\n", $shebang, $start, @segments, $end, $script; } +=encoding UTF-8 + =head1 NAME App::FatPacker - pack your dependencies onto your script file @@ -237,7 +260,7 @@ App::FatPacker - pack your dependencies onto your script file $ fatpack trace myscript.pl $ fatpack packlists-for `cat fatpacker.trace` >packlists $ fatpack tree `cat packlists` - $ (fatpack file; cat myscript.pl) >myscript.packed.pl + $ fatpack file myscript.pl >myscript.packed.pl See the documentation for the L script itself for more information.