Programming Projects
Productivity Perl Modules
Mac::Safari::JavaScript
Run JavaScript in Safari from within Perl and collect the results. Really useful for scripting your web browser or extracting part of the page you're currently reading.Net::SSH::WatchRemote
A command line utility that can be configured to connect to a remote server over SSH, install a command in that server's path to edit files, and then open the remote files on the local computer for editing whenever that command is used on the remote machine.Perl Testing Modules
Test::Builder::Tester
Test your test modules. This module is now bundled with Test::Builder itself, and is distributed as part of the perl core (i.e. along with Perl itself and is probably already installed on your computer.)Test::DatabaseRow
Test your database. Use existing SQL or have this module build it for you dynamically. Perform multiple tests on the returned data and get clear, concise, diagnostic output if any test fails.Test::XML::Easy
Testing XML with Perl easily. Unlike Test::XML (whose interface I steal) we just rely on XML::Easy which has no external C libary dependancy and is fully functional without a C compiler at all.
Test::utf8
Huristically test to see if you've double encoded a utf8 string by looking for things like "é©" in your strings.
Test::DoubleEncodedEntities
Huristically test to see if you've double encoded your XML entites by looking for things like "&é" in your strings.
Acme::Test::Buffy
A tutorial module; This silly testing module is designed to be an example of how to write, and test, your own testing module.
Perl XML Handling Modules
XML::Easy::ProceduralWriter
XML::Easy is a wonderful Perl module for writing XML. It's blindingly fast, has no dependancies on external C libraires, has just one non-core dependancy with Params::Classify, and can be installed without a C compiler. Despite this, and despite the name, it's not particularly easy to write XML with XML::Easy. This module is simple declarative interface that simplifies the interface considerably.
XML::Easy::Transform::RationalizeNamespacePrefixes
XML namespaces link prefixes (the foo part of <foo:bar/>) to URIs to allow the prefixes to refer to different namespaces. Because of the tree nature of the document however, the same prefix might mean a different namespace at a different point. This module works its way though a document changing the prefixes that are mapped to URIs so that all the prefixes that refer to the same URI are the same and all the prefixes that refer to different URIs are different.
Template::Plugin::XML::LibXML
Use XML::LibXML from within the Template Toolkit. This module exposes the XML::LibXML parser to templates and monkeypatchs the various XML::LibXML modules so they work with the Template Toolkit[% VIEW %] directive.