Fetching contributors…
Cannot retrieve contributors at this time
95 lines (66 sloc) 2.9 KB
Source Filters
Version 1.58
2017-11-15 rurban
Copyright (c) 1995-2011 Paul Marquess. All rights reserved.
Copyright (c) 2011-2014 Reini Urban. All rights reserved.
Copyright (c) 2014-2017 cPanel Inc. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
This distribution consists of a number of Source Filters.
For more details see the pod documentation embedded in the .pm files.
If you intend using the Filter::Util::Call functionality, I would strongly
recommend that you check out Damian Conway's excellent Filter::Simple
module. Damian's module provides a much cleaner interface than
Filter::Util::Call. Although it doesn't allow the fine control that
Filter::Util::Call does, it should be adequate for the majority of
applications. It's available at
Source filters only work on the string level, thus are highly limited
in its ability to change source code on the fly. It cannot detect
comments, quoted strings, heredocs, it is no replacement for a real
The only stable usage for source filters are encryption, compression,
or the byteloader, to translate binary code back to source code.
See for example the limitations in Switch, which uses source filters,
and thus is does not work inside a string eval, the presence of
regexes with embedded newlines that are specified with raw /.../
delimiters and don't have a modifier //x are indistinguishable from
code chunks beginning with the division operator /. As a workaround
you must use m/.../ or m?...? for such patterns. Also, the presence of
regexes specified with raw ?...? delimiters may cause mysterious
errors. The workaround is to use m?...? instead. See
Currently internal buffer lengths are limited to 32-bit only.
Before you can build the Source Filters you need to have the following
installed on your system:
* Perl 5.6.0 or better
For older Perls use older versions of Filter.
Assuming you have met all the prerequisites, building the modules
should be relatively straightforward.
The modules can now be built using this sequence of commands:
perl Makefile.PL
make test
The filters have been successfully built and tested on the following
systems (at least):
linux (gcc or clang)
cygwin 1.7
mingw strawberry 5.14
SunOS 4.1.3 (Sun C compiler & gcc
Solaris 2.3 (Sun C Compiler)
irix 5.3
irix 6.x
Windows XP (Visual C++ 6.0)
On Windows tr.exe and cpp.exe should be really the gnu/mingw tools in the path
for the testsuite to pass successfully.
make install