Exporter::Tiny supports many of Sub::Exporter's external-facing features
including renaming imported functions with the -as, -prefix and -suffix options;
explicit destinations with the into option; and alternative installers with the
installler option. But it's written in only about 40% as many lines of code and
with zero non-core dependencies.
Its internal-facing interface is closer to Exporter.pm, with configuration done
through the @EXPORT, @EXPORT_OK and %EXPORT_TAGS package variables.
Exporter::Tiny performs most of its internal duties (including resolution of tag
names to sub names, resolution of sub names to coderefs, and installation of
coderefs into the target package) as method calls, which means they can be
overridden to provide interesting behaviour.
The Heap collection of modules provide routines that manage a heap of
elements. A heap is a partially sorted structure that is always able to
easily extract the smallest of the elements in the structure (or the
largest if a reversed compare routine is provided).
Perlfaq5 answers the question on how to count the number of lines in a
file. This module is a convenient wrapper around that method, with
additional options.
This module can build the C portions of Perl modules by invoking the
appropriate compilers and linkers in a cross-platform manner. It was motivated
by the Module::Build project, but may be useful for other purposes as well.
However, it is not intended as a general cross-platform interface to all your C
building needs. That would have been a much more ambitious goal!
Often Perl modules are written to wrap functionality found in existing C
headers, libraries, or to use OS-specific features. It is useful in the Build.PL
or Makefile.PL file to check for the existance of these requirements before
attempting to actually build the module.
Objects in this class provide an extension around ExtUtils::CBuilder to simplify
the creation of a .c file, compiling, linking and running it, to test if a
certain feature is present.
It may also be necessary to search for the correct library to link against, or
for the right include directories to find header files in. This class also
provides assistance here.
ExtUtils::Command provides a number of utilities to replace common UNIX
commands in Makefiles, etc. At present the list includes cp, rm_f,
rm_rf, mv, cat, eqtime, mkpath, touch, test_f, test_d, chmod, and
dos2unix. Also included is the companion module Shell::Command, which
is a thin wrapper for ExtUtils::Command to provide cross-platform
functions emulating common shell commands.
File::ExtAttr is a Perl module providing access to the extended
attributes of the files.
Extended attributes are metadata associated with a file. Examples are
access control lists (ACLs) and other security parameters. But users can
add their own key=value pairs.
Extended attributes are supported by FreeBSD starting from version 5.
FcntlLock is a module to do file locking in an object oriented fashion using
the fcntl(2) system call. This allows locks on parts of a file as well as on
the whole file and overcomes some known problems with flock(2), on which Perls
flock() function is based by default.
ExtUtils::CppGuess attempts to guess the system's C++ compiler that is
compatible with the C compiler that your perl was built with.
It can generate the necessary options to the Module::Build constructor or to
ExtUtils::MakeMaker's WriteMakefile function.
This module tries to make it easy to build Perl extensions that use
functions and typemaps provided by other perl extensions. This means
that a perl extension is treated like a shared library that provides
also a C and an XS interface besides the perl one. This works as long
as the base extension is loaded with the RTLD_GLOBAL flag (usually done
with a
sub dl_load_flags {0x01}
in the main .pm file) if you need to use functions defined in the
module.