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
This article was originally posted on PerlTricks.com.
Tags
David Farrell
David is a professional programmer who regularly tweets and blogs about code and the art of programming.
Browse their articles
Feedback
Something wrong with this article? Help us out by opening an issue or pull request on GitHub