Email::MIME is an extension of the Email::Simple module, to handle MIME encoded messages. It takes a message as a string, splits it up into its constituent parts, and allows you access to various parts of the message. Headers are decoded from MIME encoding.
This module provides a Perl interface to the iconv()
codeset conversion function, as defined by the Single UNIX Specification. For more details see the POD documentation embedded in the file Iconv.pm
, which will also be installed as Text::Iconv(3)
man page.
Test::Class
provides a simple way of creating classes and objects to test your code in an xUnit style.
Built using Test::Builder
, it was designed to work with other Test::Builder
based modules (Test::More
, Test::Differences
, Test::Exception
, etc.).
This module provides functions to percent-encode and percent-decode URI strings as defined by RFC 3986. Percent-encoding URI's is informally called URI escaping. This is the terminology used by this module, which predates the formalization of the terms by the RFC by several years.
A naive imperative JSON parser in pure Raku (but with direct access to nqp::
ops), to evaluate performance against JSON::Tiny
. It is a drop-in replacement for JSON::Tiny
's from-json
and to-json
subs, but it offers a few extra features.
The Digest::MD4
module allows you to use the RSA Data Security Inc.: MD4 Message Digest algorithm from within Perl programs. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. MD4 is described in RFC 1320.
This Perl module implements Perl hashes that preserve the order in which the hash elements were added. The order is not affected when values corresponding to existing keys in the IxHash are changed. The elements can also be set to any arbitrary supplied order. The familiar perl array operations can also be performed on the IxHash.
Data::Float
is about the native floating point numerical data type. A floating point number is one of the types of datum that can appear in the numeric part of a Perl scalar. This module supplies constants describing the native floating point type, classification functions and functions to manipulate floating point values at a low level.
Pod::Parser
is a base class for creating POD filters and translators. It handles most of the effort involved with parsing the POD sections from an input stream, leaving subclasses free to be concerned only with performing the actual translation of text.
NOTE: This module is considered legacy. New projects should prefer Pod::Simple
instead.
This module offers some high level convenience functions for accessing web pages on SSL servers (for symmetry, the same API is offered for accessing http servers, too), an sslcat() function for writing your own clients, and finally access to the SSL api of the SSLeay/OpenSSL package so you can write servers or clients for more complicated applications.
Test::Mock
is a module that works alongside the standard Test module to help you write tests when you want to verify what methods are called on an object, while still having calls to undefined methods die. You get started just as normal with the test file, but also add a use
statement for Test::Mock
.
This module attempts to answer, as accurately as it can, one of the nastiest technical questions there is: am I on the internet?
A host of networking and security issues make this problem very difficult. There are firewalls, proxies (both well behaved and badly behaved). We might not have DNS. We might not have a network card at all!
JSON::Parse
is a module for parsing JSON. It offers parse_json
which takes a string containing JSON and returns an equivalent Perl structure, valid_json
which returns true or false depending on whether the JSON is correct or not, assert_valid_json
which produces a descriptive fatal error if the JSON is invalid, and so on.
XML::Writer
is a simple Perl module for writing XML documents: it takes care of constructing markup and escaping data correctly. By default, it also performs a significant amount of well-formedness checking on the output to make certain (for example) that start and end tags match, that there is exactly one document element, and that there are not duplicate attribute names.
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.