What's new on CPAN - October 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
App::Skeletor bootstraps new Perl projects based on customizable templates. Similar to Dist::Zilla (why do all these builder tools have such great names?) but intentionally less ambitious, App::Skeletor looks more useful as a component of a Perl app or a starter kit for module developers. You can run it from the terminal:
$ skeletor --template Skeletor::Template::Example \
--as My::App \
--directory ~/Projects \
--author 'John Doe' \
--year 2015
It’s early days but module author John Napiorkowski has already written enough documentation to get you started. It would be great if we could develop a set of community templates for Perl modules. Take a look today!
APIs & Apps
- App::JIRAPrint posts JIRA Tickets on Postit notes!
- Send repository commit digest emails with App::SCM::Digest
- Get terminal access to the Wikidata Query Service using App::wdq
- Get Airbrake notifications with Net::Airbrake::V2
- WebService::ConstructorIO provides a Perly interface to the predictive search service
- WebService::Pingboard is an API for the employee directory service
- Send newsletters via SendGrid using WebService::SendGrid::Newsletter
Config & Devops
- Authenticate users via LinkedIn with Linkedin::OAuth2
- IPC::Lockfile - run only one instance of a program at a time using flock (disclosure - I am the module author)
- Instead of a file, Lock::Server provides a light-weight socket based resource locking manager
- Asynchronously wait for a port to open using Net::Async::EmptyPort
Data
- Get a fast, integer-based memory cache with Cache::Memory::Simple::ID
- DB::DataStore A simple record-based data store with no non-core dependencies
- Digest::FNV::XS implements the speedy FNV hash algorithm, with support for binary data
- Exchange contact data with CardDAV servers using Net::CardDAVTalk
Development & Version Control
- Get All Tests Passing™ with Acme::Test::VW
- Bootstrap a new project from a shared template with App::Skeletor
- Attribute::Universal makes working with subroutine attributes far less painful - woohoo!
- Create enum-like classes using Class::Type::Enum
- Disable the
state
keyword with Devel::Unstate - Export symbols by attributes with Exporter::Attributes
Hardware
- Send packets compatible with the Spektrum RC protoocol with Device::Spektrum
- Not *strictly* hardware but … get Software-Defined Radio with SDR - nice!
- WebService::FritzBox - communicate with FritzBox devices
Language & International
- Map Slack
:emoji_strings:
to Unicode text using Text::SlackEmoji - WWW::YahooJapan::Baseball provides an interface to Yahoo Japan’s baseball stats service
Other
- Hilarious - Acme::Excuse provides excuses when your code fails
Science & Mathematics
- MarpaX::RFC::RFC3629 Marpa parsing of UTF-8 byte sequences as per RFC3629
- Math::HexGrid - create hex coordinate grids (disclosure - I am the module author)
- Apply a function to data in different ways using PDL::Apply
- PDL::DateTime stores high precision timestamps
Web
- Interesting, Dancer2::Plugin::ProbabilityRoute is a plugin to define behavior with probability matching rules
- Gracefully shutdown your Dancer2 application using Dancer2::Plugin::Shutdown
- Use SQLite as a backend for a Minion job queue with Minion::Backend::SQLite
Tags
David Farrell
David is the founder and editor of PerlTricks.com. An organizer of the New York Perl Meetup, he works for ZipRecruiter as a software developer.