My published perl modules - all are also available on the

, and also on
Github.
- Number::Phone (docs) - a generic superclass for Number::Phone::* modules, a module based on it which identifies and classifies UK phone numbers, and a set of modules for extracting some basic information about NANP numbers. (see it in action) (previous versions: 1.9 | 1.8006 | 1.8005 | 1.8003 | 1.8002 | 1.8001 | 1.8 | 1.7101 | 1.71 | 1.7004 | 1.7003 | 1.7002 | 1.7001 | 1.7 | 1.6 | 1.581 | 1.58 | 1.57 | 1.5601 | 1.56 | 1.55 | 1.54 | 1.53 | 1.52 | 1.51 | 1.5 | 1.4004 | 1.4003 | 1.4002 | 1.4001 | 1.4 | 1.3004 | 1.3003 | 1.3002 | 1.3001 | 1.3 | 1.2001 | 1.2 | 1.1 | 1.0);
- Params::Validate::Dependencies::all_or_none_of (docs) - extension for Params::Validate::Dependencies to match all or none of a set of options;
- Params::Validate::Dependencies (docs) - extends Params::Validate to make it easy to validate that you have been passed the correct combinations of parameters. Also a helper class for Data::Domain (previous versions: 1.11 | 1.1 | 1.00);
- Data::Hexdumper (docs) - a module to make arbitrary binary data human-readable (previous versions: 2.01 | 2.0 | 1.4 | 1.3 | 1.2 | 1.1 | 1.0.1 | 0.01);
- CPAN::ParseDistribution (docs) - module for divining what versions of which modules are in a tarball or zip file from the CPAN or BackPAN (previous versions: 1.3 | 1.2 | 1.11 | 1.1 | 1.0);
- Devel::CheckOS (docs) - find what OS and OS "family" you're running on, or require a particular OS (previous versions: 1.63 | 1.62 | 1.61 | 1.6 | 1.55 | 1.54 | 1.53 | 1.52 | 1.51 | 1.50 | 1.46 | 1.45 | 1.44 | 1.43 | 1.42 | 1.41 | 1.4 | 1.3 | 1.2 | 1.1 | 1.0 | 0.92 | 0.91 | 0.9);
- CPU::Emulator::Memory (docs) - a memory object for use in emulators. Also includes support for "banked" memory (previous versions: 1.1001 | 1.1 | 1.0);
- XML::Tiny (docs) - a simple very light-weight parser for a useful subset of XML (previous versions: 2.05 | 2.04 | 2.03 | 2.02 | 2.01 | 2.0 | 1.12 | 1.11 | 1.10 | 1.09 | 1.08 | 1.07 | 1.06 | 1.05 | 1.04 | 1.03 | 1.02 | 1.01 | 1.0);
- Games::SGF::Go::Rotator (docs) - rotate an SGF record of a game (previous versions: 1.1 | 1.0);
- Devel::CheckApplicationCapabilities (docs) - figure out what optional extras certain applications have built in;
- Class::DBI::ClassGenerator (docs) - create the skeleton of a Class::DBI application from a database schema (previous versions: 1.02 | 1.01 | 1.0);
- Tie::Hash::Vivify (docs) - hashes that auto-vivify in interesting ways. Originally by Luke Palmer, I am now a co-maintainer (previous versions: 1.00);
- Palm::ProjectGutenberg (docs) - module and script for easily converting e-books downloaded from Project Gutenberg into Palm Doc format. (see it in action) (previous versions: 1.01 | 1.0);
- Sub::WrapPackages (docs) - wrap all subroutines in named packages, à la Aspects (previous versions: 2.0 | 1.31 | 1.3 | 1.2 | 1.1 | 1.0);
- CPAN::FindDependencies (docs) - find which modules/distributions a module depends on (previous versions: 2.33 | 2.32 | 2.31 | 2.3 | 2.22 | 2.21 | 2.2 | 2.1 | 2.0 | 1.1 | 1.02 | 1.01 | 1.0);
- Devel::CheckLib (docs) - check that you can link to a particular library (previous versions: 0.699_001 | 0.6 | 0.5 | 0.4 | 0.3 | 0.2);
- Data::Compare (docs) - compare arbitrary data structures. Originally by Fabien Tassin, I am now a co-maintainer (previous versions: 1.2102 | 1.2101 | 1.21 | 1.20 | 1.19 | 1.18 | 0.17 | 0.16 | 0.15 | 0.14 | 0.13 | 0.12 | 0.11 | 0.10 | 0.09 | 0.08 | 0.07 | 0.06 | 0.05 | 0.04 | 0.03);
- File::Overwrite (docs) - overwrite the contents of a file and optionally unlink it, thus protecting against simple file recovery tools. You must read the section in the documentation entitled SECURITY. (previous versions: 1.1 | 1.0);
- Devel::Caller::IgnoreNamespaces (docs) - abstracts Hook::LexWrap's caller() magic out so it can be used by other modules;
- XML::Tiny::DOM (docs) - a DOMmish front-end for XML::Tiny (previous versions: 1.0);
- Bryar (docs) - a journalling (or blogging) program originally written by Simon Cozens, which I took over maintenance for. I have now handed the baton on to someone else. (see it in action) (previous versions: 3.0);
- Palm::Treo680MessageDB (docs) - parse SMS messages database generated by Palm Treo 680 smartphones (previous versions: 1.0);
- Tie::STDOUT (docs) - intercept data written to STDOUT and transmogrify it with functions of your choice (previous versions: 1.04 | 1.03 | 1.02 | 1.01 | 1.0);
- WWW::Facebook::Go::SGF (docs) - extract SGF records of Go games played on Facebook (see it in action);
- File::Find::Rule::Permissions (docs) - an extension for File::Find::Rule so you can find files based upon whether an arbitrary user has read/ write/ execute access to them (previous versions: 1.3 | 1.2 | 1.1 | 1.0);
- Palm::SMS (docs) - Parser for old-style PalmOS SMS databases. Will use Palm::Treo680MessagesDB if needed and available. Taken over maintenance of old module from original author;
- Sort::MultipleFields (docs) - sort hashes on multiple fields, eg by author then by title (previous versions: 0.001_01);
- DBIx::Class::SingletonRows (docs) - make rows from the database into singleton objects (previous versions: 0.1);
- CPU::Z80::Assembler (docs) - a macro assembler for the Z80 micro-processor - no longer maintained by me, see the CPAN for more recent versions (previous versions: 1.02 | 1.01 | 1.0);
- Data::Transactional
(docs) -
RDBMS-like transactions for data structures. This obsoletes my older
module Tie::Hash::Transactional.
(previous versions: 1.01 | 1.0 | 0.1 | THT 1.0);
- CPU::Emulator::Z80 (docs) - a Z80 micro-processor emulator (previous versions: 0.9);
- Palm::TreoPhoneCallDB (docs) - parse call history databases generated by Palm Treo smartphones (previous versions: 1.0);
- Net::Random (docs) - retrieves truly random data from various online sources (previous versions: 1.4 | 1.3 | 1.2 | 1.1 | 1.0);
- Number::Phone::UK::DetailedLocations (docs) - make more accurate guesses for the locations of UK phone numbers (previous versions: 1.2 | 1.1 | 1.0);
- XML::DoubleEncodedEntities (docs) - fixes broken XML which has had entities encoded twice;
- Games::Dice::Advanced (docs) - simulates rolling dice, including loaded dice and dice with impossible numbers of sides (previous versions: 1.0);
- Class::CanBeA (docs) - get a list of all the subclasses of a superclass (previous versions: 1.1 | 1.0);
- Statistics::SerialCorrelation (docs) - calculate the serial correlation co-efficient for an array (previous versions: 1.0);
- Tie::Hash::Longest (docs) - a hash which remembers its longest key and value, written in response to this discussion on perlmonks (previous versions: 1.0);
- Statistics::ChiSquare (docs) - the chi-squared test. This was previously maintained by Jon Orwant;
- Acme::Scurvy::Whoreson::BilgeRat (docs) - a multilingual insult generator, which takes pluggable backends for languages. The example plugin implements piratical insults and, like the name of the module, is in honour of International Talk Like A Pirate Day. Arrrrr! (previous versions: 1.0);
- Acme::Licence (docs) - easily apply the licence of your choice to your code;
- NestedMap (docs) - nest map{}s within each other, with access to outer map{}s' state from within inner maps;
- Acme::Pony -
turns your code into an ASCII-art pony. Note that this module used to
be known as Pony, and was renamed to fit the new convention that silly
modules go in the Acme::* hierarchy. Step one of my master plan to
take over the world is now complete, as I have achieved
infamy.
(previous versions:
1.0.1 |
1.1 |
1.1.1);
- Tie::Hash::Rank (docs) - a hash which ranks the data you throw at it (previous versions: 1.0);
- Tie::Scalar::Decay (docs) - variables that decay. It defaults to creating a scalar which decays in a manner similar to radioactive decay (previous versions: 1.1 | 1.0);