Perl Modules
by Mark Overmeer


These are all of my Perl modules, mostly distributed via CPAN.
2018: I am in the process of moving all my development work to GIT (on github).


All software listed here is copyright Mark Overmeer.
The code is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See


Please complain when you find bugs! For all support questions, you can mail me at

As self-employed programmer, I welcome any financial means to improve, extend, or support these products.


Per group of modules, there may be a browseable set of manuals, which (in my opinion) have much better links and overview than the standard Perl manual pages in POD format. Try them!

The bold faced modules are important: they have many users. When the name is lined through, then the code is still availabled here, but the distribution withdrawn (not maintained anymore)

Unrelated General purpose and ungrouped distributions.  
CPAN-Site Create local extensions to the CPAN module list, to simplify the distribution of private modules over your own internal computer infrastructure. A bit like cpanmini. src cpan github
Hash-Case Various kinds of case-insensitive hashes. For instance some databases ignore case differences, and it is useful to represent these external short-comings in a Perl data-type. src cpan github
OODoc Perl's standard POD does not help you documenting Object Oriented programs. OODoc improves POD (a lot), especially useful for distributions with many large modules. Startingpoint and html docs. src cpan todo
OODoc-Template Minimal template system, as everyone made one. Used by OODoc to configure the output of the HTML pages. src cpan ?
PPresenter Portable Presenter is used to create presentations with Perl/Tk. Write slides as objects in a perl-program, and have them displayed on multiple screen at the same time, or as website. Very (too?) powerful. Discontinued: no users. (docs in html) src x x
Tie-Nested Nested data-structures which get tied automatically when they grow. src cpan github

Some modules for Internet services, like DNS.

Apache-Solr HTTP interface to the Solr full text search engine. It abstracts the datatypes of the parameter. src cpan todo
MailTools Ancient set of various e-mail related packages from various authors. Unfortunately, these are still being used in code and in explained in books, so need to be maintained. Please use MailBox! src cpan github
MIME-Types Knowledge database about mime-types, which are used in various Internet protocols like e-mail and HTTP. (docs in html) src cpan github
Mozilla-Persona Website authorization via Mozilla's "Persona" protocol. Discontinued by Mozilla. src x x
Net-Domain-TMCH Read and write TradeMark ClearingHouse messages (signed XML), which TLDs use to block registration of domains which have a trademark. Used by the AT-TLD. src cpan todo
Net-FTP-Robust Extend basic Net::FTP with error recovery and retry. src cpan github
Net-FTPSSL-Robust Extend basic Net::FTPSSL with error recovery and retry. src cpan github
Net-OAuth2 Generic OAuth2 implementation. src cpan todo
Net-Whois-SIDN SIDN (the NL-TLD) publishes whois information via a SOAP interface in XML to registered users. Status unknown. x cpan x

One of my larger applications is an archiving system for raw satellite imagery. Quite a number dists were created as spin-off. However: the archive does not exist anymore, so I have no need to improve this code. I will fix bugs and may apply your extensions.

html docs
Math-Polygon Some basic manipulations with polygons in pure Perl, which I mainly use for manipulation geographic shapes. src cpan github
Geo-EOP XML Standard for describing Earth Observation Products. Discontinued: followed-up by version 2.0, which the module does not support. src x x
Geo-Format-Envisat Understand the meta-data of Envisat products. src cpan github
Geo-Format-Landsat Understand the meta-data of Landsat products. src cpan github
Geo-GML Reading and writing Geographic Markup Language (GML) files, with support to convert them into Geo::Point structures. src cpan github
Geo-ISO19139 Geographic MetaData XML (gmd) encoding. src cpan github
Geo-KML Keyhole Markup Language (GoogleEarth). Discontinued: the official schema does not match reality. src x x
Geo-Point Abstraction of geo-surfaces: it combines X, Y, and coordinate srs into points. Various common features, like reprojections, are provided. src cpan github
Geo-Proj4 XS wrapper around the popular Open Source "libproj4" library, which converts points between projection systems. src cpan github
Geo-WKT Convert between Geo::Point and the Well Known Text (WKT) notation of geographical structures. WKT is, for instance, used in databases. src cpan github

The MailBox suite is a very feature rich set of modules capable of processing emails. MailBox is in active (commercial) use for many years. See starting point, overview, feature index, and mailinglist

html docs
HTML-FromMail Produce HTML from e-mail messages via your own templates. src cpan github
Mail-Box Abstraction of handling email folders, in the popular mbox, mh, and maildir structures. src cpan github
Mail-Box-IMAP4 Support IMAP4 mail servers in MailBox. src cpan github
Mail-Box-Parser-C Implementation of parsing MBOX files in XS. This is a measurable improvement of performance, but MailBox is also pretty fast without it. src cpan github
Mail-Box-POP3 Support POP3(s) mail servers in MailBox src cpan github
Mail-Message Very powerful email message parser, builder, processor. Deep understanding of header fields. src cpan github
Mail-Transport Send Mail::Message (and many other) messages, to various MTAs. src cpan github
Object-Realize-Later Creates a stub object which can be used to auto-load objects on the moment of first use, in stead of when they are defined. src cpan github
User-Identity Many applications need to keep information about people. This modules tries to provide smart defaults and often used needs, like printing addresses. src cpan github

In my experience, exception handling, reporting, and translations are very closely related: without Log::Report you have to join these three components together yourself. With LogReport, you can do it in any or all of these at once. Starting point

html docs
Log-Report Integrate (error) message dispatching with translations. Not the programmer decides how the problems are solved, but the developer of the main program. Writes to screen, file, syslog, or log4perl. src cpan github
Log-Report-Lexicon The optional translation component of Log::Report. src cpan github
Log-Report-Optional Support Log::Report for your module, but do not require it for the whole application. Comparible with Carp. src cpan github
Log-Report-Template Extend Template Toolkit with translations and other smart features of Log::Report/String::Print src cpan github
String-Print This is sprintf on steroids: extremely flexible string interpolation, which also makes translation tables simpler to understand. src cpan github

Build a translator from (typeless) Perl into (strictly typed) XML and reverse. Most work is done at initiation, running is fast. Also, the base for SOAP and many extensions in other categories on this page. Starting point

html docs
XML-Compile Understand XML Schema's (XSDs). Generate Perl-to-XML, XML-to-Perl, and XML-to-examples for schema types. src cpan github
XML-Compile-C14N Normalization schema's for XML messages. src cpan todo
XML-Compile-Cache Simplify the use of the XML::Compile::Schema, with prefixes and code reference caching. src cpan github
XML-Compile-Dumper Dumper compiled converters produced by XML::Compile. The output is huge and therefore not practical. Deprecated. src cpan ?
XML-Compile-Licensed Some modules, like the ::Daemon, may use schema's which have an unclear or non-open license. To be able to create (Debian) packages for those modules, the uncertain elements are grouped in this distrubtion. src cpan todo
XML-Compile-RPC Although there is no official schema for (non-SOAP) Remote Procedure Calls (RPC), it was doable to create one. Now, static typing of XML::Compile simplifies RPC a lot. src cpan todo
XML-Compile-SOAP Implements the SOAP 1.1 protocol based on XML::Compile, so with strict type. Only really simple for document style SOAP. src cpan github
XML-Compile-SOAP-AnyEvent Extension for SOAP clients to be Any::Event based, so requests are able to run in parallel. src cpan todo
XML-Compile-SOAP-Daemon Run a SOAP server. Ideal for testing, but also professional applications. Integrates with various servers. src cpan todo
XML-Compile-SOAP-Mojolicious Extension for SOAP clients to use Mojolicious events, so requests will run in parallel. src cpan todo
XML-Compile-SOAP12 Implements the SOAP 1.2 protocol based on XML::Compile. src cpan todo
XML-Compile-Tester Helper to test XML modules. src cpan todo
XML-Compile-WSA Adds the Web Services Addressing standard to SOAP and WSDL. src cpan todo
XML-Compile-WSDL11 Implements the Web Services Description Language (WSDL) version 1.1, which describes (mainly) SOAP services. src cpan todo
XML-Compile-WSS Adds the Web Services Security extension framework to SOAP and WSDL. src cpan todo
XML-Compile-WSS-Signatures Adds WSS Signatures to SOAP and WSDL, which is complicated cryptography. src cpan todo
XML-LibXML-Simple Rewrite of XML::Simple to use the LibXML parser, which is faster and better. Use this if you have no schema. src cpan todo
XML-Rewrite Rewrite XMLs (may even be schema's) based on schema's. src cpan todo
XML More

Above are "XML core technologies". Here a lists of XML applications. Besides, there are quite a number of XML protocols in my "Geo" category.

BPM-XPDL Standard to describe business and process information in XML. src cpan ?
Data-DublinCore Standard to describe publication related meta-data. src cpan todo
Google-Merchant Client for Google's Merchant interface (publish shopping products). Discontinued: server messages do not always validate. src x x
Payment-Sisow SOAP-Client to the Sisow payment provider. Their REST interface is far more powerful, but SOAP is well-defined. src cpan todo
XML-ExistDB Client for the "Exist" database, which stores data as xml documents, using xquery to retreive and update them. src cpan todo
XML-LibXML-Simple Drop-in replacement for XML::Simple: it uses libxml2 as parser via XML::LibXML, which is much faster and better than pure perl. src cpan todo
Daemons and OS

UNIX/Linux is a perfect playground. Perl offers many of the OS features on a pure-enough interface to implement complex system tasks.

Any-Daemon A full featured generic daemon implementation, waiting to handle your tasks. src cpan github
Any-Daemon-HTTP HTTP server in pure perl, with many feature you know from Apache and other webservers. src cpan github
HTTP-Server-Multiplex Event driven implementation of an HTTP server. src cpan ?
IOMux Very clean abstraction of the select and poll OS functions. src cpan todo
IOMux-HTTP Webserver based on IOMux. src cpan ?
POSIX-1003 Attempt to provide all functions which are described in the POSIX 1003 (and related standards) to Perl. More than 1000 functions and many thousands of constants. src cpan todo
POSIX-Util Abstraction of often used more complex OS logic into Perl. src cpan todo
2018/01/19 Mark Overmeer