What's new on CPAN - October 2019
Welcome to “What’s new on CPAN”, a curated look at last month’s new CPAN uploads for your reading and programming pleasure. Enjoy!
APIs & Apps
- Azure::Storage::Blob::Client can store blogs via the Azure API
- Google::RestApi opens an Oauth2 connection to Google APIs and includes modules for working with Drive and Sheets
- Find corresponding GitHub issues for RT numbers with Perl::RT2Github
- Net::Kafka aims to be a high-performant client for Apache Kafka
- WWW::Deduce::Ingest is an interface to the (undocumented?) Deduce Ingestion API
Config & Devops
- Generate bash tools from YAML with appspec-bash
- Dir::Flock provides a typical file locking mechanism, but on directories. Bonus! it works on NFS
Data
- DBIx::Class::ParseError parses database errors into DBIx::Class::Exception objects
- Eval(!) Perl code found in JSON using JSON::Eval
- MySQL::Dump::Parser::XS is a fast mysqldump parser
- Parse a typical search engine query string using Parqus
- Escapes strings into RTF with RTF::Encode
Development & Version Control
- IIIF Image API implementation - IIIF
- Get bindings for librtmidi the Realtime MIDI library with MIDI::RtMidi::FFI
- MP4::LibMP4v2 provides a Perl interface to libmp4v2
- With::Roles can compose roles into classes, objects and compound roles
- Import methods to be used like keywords using methods::import
Science & Mathematics
- Algorithm::Odometer::Tiny generates “base-N odometer” permutations
- Math::DCT can do 1D and NxN 2D Fast Discreet Cosine Transforms (DCT-II)
Web
- Mojo::HTTPStatus exports readable constants for HTTP response status codes
- Mojo::Promise::Role::Repeat provides a Promise looping construct with break
- Mojolicious::Command::bcrypt bcrypt a password using the settings in your Mojolicious app.
Tags
David Farrell
David is the editor of Perl.com. An organizer of the New York Perl Meetup, he works for ZipRecruiter as a software developer, and sometimes tweets about Perl and Open Source.
Browse their articles
Feedback
Something wrong with this article? Help us out by opening an issue or pull request on GitHub