| PAR-Filter-Squish documentation | Contained in the PAR-Filter-Squish distribution. |
PAR::Filter::Squish - PAR filter for reducing code size
# transforms $code
PAR::Filter::Squish->apply(\$code, $filename, $name);
This filter uses Perl::Squish to reduce the size of a module as much as possible.
It does not preserve line numbers, comments or documentation.
Do not expect miracles. Unless you include a lot of modules,
the major component of a binary produced by pp will be
shared object files and the perl run-time.
Class method which applies the filter to source code. Expects a reference to the code string as first argument optionally followed by file and module name. Those names are particularily accepted for compatibility to other PAR filters.
Steffen Mueller <smueller@cpan.org>
http://par.perl.org/ is the official PAR website. You can write to the mailing list at <par@perl.org>, or send an empty mail to <par-subscribe@perl.org> to participate in the discussion.
Please submit bug reports to <bug-par-filter-squish@rt.cpan.org>.
Copyright 2006-2008 by Steffen Mueller <smueller@cpan.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| PAR-Filter-Squish documentation | Contained in the PAR-Filter-Squish distribution. |
package PAR::Filter::Squish; use strict; use vars qw/$VERSION/; $VERSION = '0.03'; use Perl::Squish; use base 'PAR::Filter';
sub apply { my ($class, $ref, $filename, $name) = @_; return if $filename =~ /\.bs$/i; no warnings 'uninitialized'; my $data = ''; $data = $1 if $$ref =~ s/((?:^__DATA__\r?\n).*)//ms; my $doc = PPI::Document->new($ref); my $trafo = Perl::Squish->new(); if (not defined $doc) { warn __PACKAGE__ . ": Could not parse '$filename' using PPI!"; $$ref .= $data; return; } $trafo->apply($doc); if (not defined $doc) { warn __PACKAGE__ . ": Could not apply transformation to '$filename'!"; $$ref .= $data; return; } $$ref = $doc->serialize(); $$ref .= $data; } 1;