Bit::Vector is an efficient C library which allows you to handle bit vectors, sets (of integers), "big integer arithmetic" and boolean matrices, all of arbitrary sizes. The package also includes an object-oriented Perl module for accessing the C library from Perl, and optionally features overloaded operators for maximum ease of use. The C library can nevertheless be used stand-alone, without Perl.
Test::Needs
allows you to skip test scripts if modules are not available. The requested modules will be loaded, and optionally have their versions checked. If the module is missing, the test script will be skipped. Modules that are found but fail to compile will exit with an error rather than skip.
If used in a subtest, the remainder of the subtest will be skipped.
Hash::Merge merges two arbitrarily deep hashes into a single hash. That is, at any level, it will add non-conflicting key-value pairs from one hash to the other, and follows a set of specific rules when there are key value conflicts. The hash is followed recursively, so that deeply nested hashes that are at the same level will be merged when the parent hashes are merged.
File::pushd
does a temporary chdir
that is easily and automatically reverted, similar to pushd
in some Unix command shells. It works by creating an object that caches the original working directory. When the object is destroyed, the destructor calls chdir
to revert to the original working directory. By storing the object in a lexical variable with a limited scope, this happens automatically at the end of the scope.
This is released as a dependency of JSON::Marshal
and JSON::Unmarshal
in order to save duplication, it is intended to store a separate JSON name for an attribute where the name of the JSON attribute might be changed, either for aesthetic reasons or the name is not a valid Perl identifier. It will of course also be needed in classes thar are going to use JSON::Marshal
or JSON::Unmarshal
for serialization/deserialization.
An SQL to OO mapper with an object API inspired by Class::DBI (with a compatibility layer as a springboard for porting) and a resultset API that allows abstract encapsulation of database operations. It aims to make representing queries in your code as perl-ish as possible while still providing access to as many of the capabilities of the database as possible, including retrieving related records from multiple tables in a single query, "JOIN", "LEFT JOIN", "COUNT", "DISTINCT", "GROUP BY", "ORDER BY" and "HAVING" support.
This module adds the ability to quickly create new types of tie objects without creating a complete class. It does so in such a way as to try and make the programmers life easier when it comes to single-use ties that I find myself wanting to use from time-to-time.
The Tie::Simple package is actually a front-end to other classes which really do all the work once tied, but this package does the dwimming to automatically figure out what you're trying to do.
PerlTeX is a combination Perl script (perltex.pl
) and LaTeX2e package (perltex.sty
) that, together, give the user the ability to define LaTeX macros in terms of Perl code. Once defined, a Perl macro becomes indistinguishable from any other LaTeX macro. PerlTeX thereby combines LaTeX's typesetting power with Perl's programmability. PerlTeX will make use of persistent named pipes, and thereby run more efficiently. Also provided is a switch to generate a PerlTeX-free, document-specific, noperltex.sty
that is useful when distributing a document to places where PerlTeX is not available.
Tainted data is data that comes from an unsafe source, such as the command line, or, in the case of web apps, any GET
or POST
transactions. Read the perlsec
man page for details on why tainted data is bad, and how to untaint the data.
When you're writing unit tests for code that deals with tainted data, you'll want to have a way to provide tainted data for your routines to handle, and easy ways to check and report on the taintedness of your data, in standard Test::More
style.
This module provides ways to parse XML documents. It is built on top of XML::Parser::Expat, which is a lower level interface to James Clark's expat library. Each call to one of the parsing methods creates a new instance of XML::Parser::Expat which is then used to parse the document. Expat options may be provided when the XML::Parser object is created. These options are then passed on to the Expat object on each parse call. They can also be given as extra arguments to the parse methods, in which case they override options given at XML::Parser creation time.
Net::Server is an extensible, generic Perl server engine. It attempts to be a generic server as in Net::Daemon and NetServer::Generic. It includes with it the ability to run as an inetd process (Net::Server::INET), a single connection server (Net::Server or Net::Server::Single), a forking server (Net::Server::Fork), a preforking server which maintains a constant number of preforked children (Net::Server::PreForkSimple), or as a managed preforking server which maintains the number of children based on server load (Net::Server::PreFork). In all but the inetd type, the server provides the ability to connect to one or to multiple server ports.
PerlIO::gzip provides a PerlIO layer that manipulates files in the format used by the gzip
program.
Modern::Perl
provides a simple way to enable multiple, by now, standard libraries in a Perl program.
Authen::SASL provides an SASL authentication framework.
Test::Simple contains basic utilities for writing tests.
XML::Writer
is a module for creating XML in Raku.
CGI::Session
provides modular session management system across HTTP requests.
Array::Utils
is a small pure-perl module containing list manipulation routines.
This package provides a package to change terminal modes and perform non-blocking reads.
This Perl module is an interface to the GNOME project's libxslt library.
This module is a rather incomplete implementation of work done by Gudrun Putze-Meier.
Test::NoTabs
lets you check the presence of tabs in your perl code.
This module in a fully object-oriented implementation of a simple n-ary tree.
Carp::Assert is intended for a purpose like the ANSI C library assert.h.