What's new on CPAN - June 2015
Welcome to “What’s new on CPAN”, a curated look at last month’s new CPAN uploads for your reading and programming pleasure. Enjoy!
Module of the month
Class::Storage is a module for serializing blessed references (objects). Once serialized, an object can be transmitted via JSON, XML, YAML or saved in a data store. Serializing objects can also make IPC easier: coroutines, threads and other processes can pass text but blessed references are often an issue.
Module author Peter Valdemar Mørch has pulled together excellent documentation. A welcome addition to CPAN, check out the acknowledgements section for some interesting background on the module. For an alternative approach, you might be interested in Object::Serializer. For non-readable serializers, checkout Storable and the newer and faster Sereal.
Important - when working with object serializers like Class::Storage, only deserialize trusted data, as malicious code can be injected into the data, and when the data is deserialized, the code will be executed automatically. See for example this bug report (Thanks to Reini Urban for the reminder).
APIs & Apps
- API::Zendesk provides a Perl interface for the customer support app
- Painlessly install libsvm, the support vector machine library using Alien::LIBSVM
- Use Slack? Of course you do. Check out AnyEvent::SlackRTM
- Develop your first Slack bot with Bot::Backbone::Service::SlackChat!
- Interchange::Search::Solr let’s you use Solr search with Perl
- Be popular, send your co-workers Bonusly with WebService::Bonusly
- WebDriver::Tiny is an all-new implementation of a Selenium webdriver API for Perl
Config & DevOps
- Config::App implements “cascading configurations” - looks like a convenient way to have context-specific configurations without resorting to Perl code
- Quickly rind files on your Mac using Mac::FindFile
- Perl::Critic::Freenode is a compilation of policies recommended by the folks on the #perl channel on freenode IRC
- Include ditaa diagrams in pod with Pod::Weaver::Plugin::Ditaa
- Extract data from your Zoom 5341J cable modem with Device::CableModem::Zoom5341J
- Log::Dispatch::HipChat will send your log messages to HipChat
- Moving averages are easy to implement, and easy to get wrong. The next time you need one, consider Math::SMA
- If you’re working with 35mm film and DX codes, you might like Photography::DX
Development and Version Control
- When stuck in Git merge conflict hell, sometimes it’s easier to say “I’m right”. App::Git::Workflow::Command::Take let’s you tell Git to merge your changes. You win!
- If you have a load of Git repos that you’d like to execute a command against, you might like App::Multigit
- Assert::Conditional from Tom Christiansen let’s you conditionally compile assertions into your Perl programs, ala C’s assert.h. Wow
- Daemonize anything with JIP::Daemon
Text & Language
- Acme::Unicodify can convert ASCII text into Unicode-esque characters
- Crypt::RS14_PP is a pure Perl implementation of the RS14 encryption algorithm
- Convert HTML into FreeStyleWiki markup using HTML::WikiConverter::FreeStyleWiki
- Awesome! detect the language with Lingua::Identify::CLD2
Science and Mathematics
- Algorithm::BloomFilter is a simple, superfast bloom filter implementation written in XS
- Not a new module, but it is new to CPAN, App::Chart the visual charting library is useful
- BioX::Workflow is an “opinionated template based workflow writer”, hailing from the Bioinformatics World, but not just for BioX
- The Longest Common Subsequence algorithm is used for diffing text, among other uses. LCS::XS is a supercharged version, written in XS
- Extract all of the supported URLs from your Catalyst app using Catalyst::Plugin::ActionPaths (disclosure, I’m the module author)
- Dancer::Plugin::Piwik helps you integrate Pwik analytics with a Dancer app
- Use MongoDB with Minion, the job queue application using Minion::Backend::MongoDB
- Mojo::Reactor::UV let’s you use the C library, libuv as the backend event loop for your Mojo application
- Rapidly expand shortened URLs with WWW::Expand::More. Cool!
Updated to include other example serializer modules and deserialization warning - 2015-07-09