Clumping

This post is a "thinking out loud" post, about an unimplemented feature I'm planning.

The problem

The most often complaint I get when I release a Perinci::CmdLine -based Perl application is the huge dependencies of Perinci::CmdLine (currently Perinci::CmdLine::Lite only has 24 direct non-core dependencies, but recursively it has 98 non-core dependencies in 92 unique distributions). By the way, you can produce these numbers "very easily" using lcpan and td:

% lcpan mods -lx Perinci::CmdLine::Lite
+------------------------+---------+-------------------------------------------------------+----------------------+-----------+----------------------+---------+
| module                 | version | abstract                                              | dist                 | author    | rel_mtime            | is_core |
+------------------------+---------+-------------------------------------------------------+----------------------+-----------+----------------------+---------+
| Perinci::CmdLine::Lite | 1.812   | A Rinci/Riap-based command-line application framework | Perinci-CmdLine-Lite | PERLANCAR | 2018-05-01T08:42:19Z | 0       |
+------------------------+---------+-------------------------------------------------------+----------------------+-----------+----------------------+---------+
% lcpan deps Perinci::CmdLine::Lite --noinclude-core | wc -l
24
% lcpan deps Perinci::CmdLine::Lite --noinclude-core -R | wc -l
98
% lcpan deps Perinci::CmdLine::Lite --noinclude-core -R --flatten | \
    td select module | lcpan mod2dist | td select value | sort | uniq | wc -l
92

Sort of ironic because years ago I used to mock Moose 's high number of dependencies and avoid it like the plague, and then ending up creating the same situation with my own distribution. Correction: a much worse situation than the current Moose:

% lcpan mods -lx Moose
+--------+---------+---------------------------------------+-------+--------+----------------------+---------+
| module | version | abstract                              | dist  | author | rel_mtime            | is_core |
+--------+---------+---------------------------------------+-------+--------+----------------------+---------+
| Moose  | 2.2010  | A postmodern object system for Perl 5 | Moose | ETHER  | 2018-02-16T22:01:37Z | 0       |
+--------+---------+---------------------------------------+-------+--------+----------------------+---------+
% lcpan deps Moose --noinclude-core | wc -l
19
% lcpan deps Moose --noinclude-core -R | wc -l
22
% lcpan deps Moose --noinclude-core -R --flatten | \
    td select module | lcpan mod2dist | td select value | sort | uniq | wc -l
22

I arrange the modules into many distributions because I am trying to keep things modular. So when I only need a specific subset of functionality, I don't have to pull the whole thing (and along with it its large list of dependencies). Maybe I went overboard? Maybe. Nevertheless.

The high number of dependencies presents an inconvenience and annoyance when users want to install my application, especially since CPAN clients like cpan and cpanm default to testing distributions before installing them.

One solution: Perinci::CmdLine::Inline

One solution I created for this problem is Perinci::CmdLine::Inline (PC:Inline) which basically "pre-assembles" the application with sort of a "mini", "embedded" Perinci::CmdLine during distribution build time, so that when a user installs the application she doesn't need to get Perinci::CmdLine anymore. This also has another benefit of faster application startup time due to the "pre-assembling" thingy. But this pre-assembling has some downsides too. Whenever I create a new version of PC:Inline, I will have to rebuild all the applications again. PC:Inline also does not (read: will not, because of the lack of Riap layer) have all the features of a proper Perinci::CmdLine. I use PC:Inline only for simpler applications that need to be very light (has no non-core dependencies, or starts fast) like hr, wordlist, zodiac-of.

Another solution: fatpacking, datapacking

Another solution is fatpacking or datapacking. I've tried this in the past with the pause script, and it works rather well. Except that when it comes to packaging the CPAN distribution as a Debian package, the Debian policy forbids "convenience copies" of code.

Past solution: lumping

Yet another solution which I've tried in the past is what I call "lumping": in a lump distribution I include modules from other distributions (the dependencies) but leave them unindexed. For example, I created a distribution called Perinci-CmdLine-Any-Lumped that contains modules from Perinci-CmdLine-Any (Perinci::CmdLine::Any) as well as all its recursive pure-perl non-core dependencies, like Data::Sah, Data::Sah::Coerce, and so on. After installing just one lump distribution, a user will have perhaps 100+ extra (but "hidden") modules from various distributions on her system. The perl interpreter will see those extra modules fine. The modules are "hidden" only in the sense that the original distributions of those modules are not listed as installed (because they aren't).

I abandoned this solution because it feels really dirty. The extra modules lumped into the lump distribution are actually "orphan" modules because the lump distribution does not publicly confess that it includes the modules. And I'm pretty sure lump distributions are not good candidates for Debian perl packages, but it's okay.

Another proposed solution: clumping

This post will describe another solution which I'm thinking of (with an equally stupid name so if the idea ended up being really stupid, the name would have already fitted): clumping.

A clump distribution is named "Clump-SOMETHING" and will contain modules from several other distributions (called "source distributions"). The purpose of a clump distribution is to package several other distributions as a single distribution for the purpose of reducing the number of dependencies for the end-user.

For example, a clump distribution called "Clump-Data-Sah" will contain modules from Data-Sah as well as Data-Sah-Coerce, Data-Sah-Format, and so on.

Dist::Zilla::Plugin::Clump

To help build this distribution, a Dist::Zilla plugin will be created and used: DZP:Clump. To use this plugin, we list the source distributions that we want to include:

[Clump]
include=Data-Sah
include=Data-Sah-Coerce
include=Data-Sah-Format
...

The plugin will gather module files from the source distributions as well as merge the dependencies from the source distributions into the dependencies for the clump distribution.

Dependencies that end up being in the clump distribution can be "netted out". For example, Data-Sah depends on Data::Sah::Coerce which is in the Data-Sah-Coerce distribution which is also another source distribution in the clump, so this dependency now does not need to be specified in Clump-Data-Sah.

Clumping and module versions

The version number of a module inside the clump distribution will be the original version joined by ".0". So for example, if the original version number of module M1 is "0.001" then M1's version number in the clump distribution is "0.001.0". If M2's original version is "0.1.2" then M2's version in the clump is "0.1.2.0" and so on. As far as perl concerns the two version numbers in each case are the same:

version->parse("0.001") == version->parse("0.001.0")
version->parse("0.1.2") == version->parse("0.1.2.0")

The module version will have to be checked to satisfy the above relationship and if it does not, a new release will need to be made in the source distribution first to remedy this. For example, M3's original version is 0.02. If we append ".0" to it to become "0.02.0" then the new version will be less than the original version:

version->parse("0.02") > version->parse("0.02.0")
# because 0.02   is 0.020
# and     0.02.0 is 0.002.0

To include M3 in the clump, we will need to make a new release of M3 in the original source distribution first, say of version 0.030. Then M3 version 0.030 can now be included in the clump, as version 0.030.0.

Yes, this means the clump distribution will contain different version numbers. Which is usually not recommended for a "normal" Perl distribution but is appropriate here.

Clumping and the PAUSE indexer

When the clump distribution is released, PAUSE will index the clump distribution and now modules included in the clump will be indexed as belonging to the clump distribution instead of their original distribution.

When user installs one of these modules, she will be getting it (and automatically a lot of other modules too) from the clump distribution, thus reducing the number of distributions she needs to install to satisfy all the dependencies of an application.

Developing modules that are included in clumps

Ideally, modules are still developed in its original source distribution, e.g. Data::Sah::Coerce in Data-Sah-Coerce. When I want to release a new version of Data::Sah::Coerce, I can just release a new version of Data-Sah-Coerce. Now the module will be indexed by PAUSE as belonging to the new Data-Sah-Coerce.

As more and more modules are being "unclumped" as new releases of the source distributions come along, the level of inconvenience to end-users will once again increase. To remedy this, from time to time I can release a new clump distribution again that contains newer "snapshots" of modules.

This is the reason why version of modules in the clump is being kept the same (albeit with extra ".0"): so version bump in the original source distribution will be able to "eclipse" the clumped version on CPAN later. Even when the original distribution bumps using an extra subversion, e.g. 0.001 to 0.001.1 it will still eclipse the clumped version. The next clumped version will be 0.001.1.0.

Clumping vs lumping

This clump solution is cleaner than the lumping solution because in the former case, no modules are "hidden". Basically clumping is lumping, but the included modules are "acknowledged" and properly indexed. The $orig_version . ".0" thing is really the only novel element here. Because the modules are now not hidden, their dependencies must now also be handled.

As to Debian packaging, the source distributions and not the clump distribution are the ones that will be packaged so there should not be an issue with "convenience copies" or "bundling".

Advertisements

Generating random passwords according to patterns with genpw

There are several modules on CPAN for generating random passwords, but last time I checked, none of them are flexible enough. Different websites or applications have different requirements (sometimes ridiculous ones) for passwords. True, most modules allow setting minimum/maximum length, and some of them allow customizing the number of special characters, or number of digits, but what I want is some sort of template/pattern that the generator would follow. So I created genpw.

Basic functionality

genpw is your usual random password generator CLI. When run without any arguments, it returns a single random password (8-20 characters long, comprising letters/digits):

% genpw
J9K3ZjBVR

To return several passwords:

% genpw 5
wAYftKsS
knaY7MOBbcvFFS3L1wyW
oQGz62aF
sG1A9reVOe
Zo8GoFEq

To set exact length or minimum/maximum of length:

% genpw -l 4
1CN4
% genpw --min-len 12 --max-len 14
nqBKX5lyyx7B

Patterns

In addition to the above basic customization, genpw allows you to specify a pattern (or several patterns to pick randomly, for that matter). A pattern is a string that is similar to a printf pattern where conversion sequences like %d will be replaced with actual random characters. Here are the available conversions:

%l   Random Latin letter (A-Z, a-z)
%d   Random digit (0-9)
%h   Random hexdigit (0-9a-f)
%a   Random letter/digit (Alphanum) (A-Z, a-z, 0-9; combination of %l and %d)
%s   Random ASCII symbol, e.g. "-" (dash), "_" (underscore), etc.
%x   Random letter/digit/ASCII symbol (combination of %a and %s)
%m   Base64 character (A-Z, a-z, 0-9, +, /)
%b   Base58 character (A-Z, a-z, 0-9 minus IOl0)
%B   Base56 character (A-Z, a-z, 0-9 minus IOol01)
%%   A literal percent sign
%w   Random word

You can specify %NC (where N is a positive integer, and C is the conversion) to mean a sequence of random characters (or a random word) with the exact length of N. Or %N$MC (where N and M are positive integers) to mean random characters (or word) with length between N and M.

Unsupported conversion will be unchanged, like in printf.

Some examples:

Generate random digits between 10 and 12 characters long:

% genpw -p '%10$12d'
55597085674

Generate a random UUID:

% genpw -p '%8h-%4h-%4h-%4h-%12h'
ff26d142-37a8-ecdf-c7f6-8b6ae7b27695

Like the above, but in uppercase:

% genpw -p '%8h-%4h-%4h-%4h-%12h' -U
22E13D9E-1187-CD95-1D05-2B92A09E740D

Words

The %w conversion in pattern mean to replace with a random word. Words are fetched from STDIN (and will be shuffled before use). For example, the command below will generate password in the form of a random word + 4 random digits:

% genpw -p '%w%4d' < /usr/share/dict/words
shafted0412

Instead of from STDIN, you can also fetch words from the various WordList::* modules available on CPAN (and installed locally). A separate CLI provides this functionality: genpw-wordlist, which is basically just a wrapper to extract the words from the wordlist module(s) then feed it to App::genpw. By default, if you don't specify -w option(s) to select wordlist modules, the CLI will use WordList::EN::Enable:

% genpw-wordlist -p '%w%4d'
sedimentologists8542

Generate 5 passwords comprising 8-character word followed by between four to six random digits:

% genpw-wordlist 5 -p '%8w-%4$6d'
alcazars-218050
pathogen-4818
hogmanes-212244
pollened-3206
latinity-21053

Configuration file

To avoid you from having to type patterns again and again, you can use a configuration file. For example, put this in $HOME/genpw.conf:

[profile=uuid]
patterns = %8h-%4h-%4h-%4h-%12h
case = upper

then you can just say:

% genpw -P uuid
7B8FB8C6-0D40-47A3-78B7-848A114E5C6D

Speed

The speed is not great, around 2000 passwords/sec on my laptop, though I believe this should not matter for most use-cases.

Closing

genpw is a flexible random password generator where you can specify patterns or templates for the password. I'm still working on a few things, like how to enable secure random source in the most painless way. There are also various CLI variants to generate specific kinds of passwords as straightforward as possible: genpw-base56, genpw-base64, genpw-id, and the aforementioned genpw-wordlist.

List of new CPAN distributions – Apr 2018

dist author version abstract
Acme-CPANModules-PortedFrom-NPM PERLANCAR 0.001 Modules/applications that are ported (or inspired from) NPM libraries
Acme-Pointer CODEHEX 0.01 We can access to data using address as the string
Acme-ZeroWidth VTI 0.01 Zero-width fingerprinting
Aliyun NSNAKE 0.9 阿里云SDK
Apache2-AuthCASpbh PHENSON 0.10 CAS SSO integration for Apache/mod_perl
App-DHCPClientUtils HQJATU 0.01 ISC dhclient lease information
App-ModuleVersionDiffUtils PERLANCAR 0.001 Utilities to diff stuffs from two different versions of a module
App-QRCodeUtils PERLANCAR 0.001 Utilities related to QR Code
App-cryp-exchange PERLANCAR 0.001 Interact with cryptoexchanges
App-cryp-mn PERLANCAR 0.001 Manage your masternodes
App-indodax PERLANCAR 0.023 CLI for Indodax.com
App-rank PERLANCAR 0.001 Rank lines of text files
App-rs RSLOVERS 1.01 package manager of RSLinux
Astro-Units SPAJAI 1.10 Astronomical unit conversion with high precision and large number support
Astro-units SPAJAI 1.00
Business-BR-CNJ-Classes DLIMA 0 Convert brazilian CNJ (Conselho Nacional de Justiça) class numbers and abreviations to full text names/description.
Business-BR-CNJ-Format DLIMA 0 Format brazilian CNJ (Conselho Nacional de Justiça) numbers, from all numbers to correctly ponctuated strings.
Business-ID-NKK PERLANCAR 0.001 Parse Indonesian family card number (nomor kartu keluarga, NKK)
CPAN-Test-Dummy-Perl5-UseUnsafeINC-Fail MIYAGAWA 0.01 Fails when PERL_USE_UNSAFE_INC is set
CPAN-Test-Dummy-Perl5-UseUnsafeINC-One MIYAGAWA 0.01 x_use_unsafe_inc 1
Catalyst-Plugin-ServeFile JJNAPIORK 0.001 A less opinionated, minimal featured way to serve static files.
Class-Slot JEFFOBER 0.01 Simple, efficient, comple-time class declaration
Command-Runner SKAJI 0.001 run external commands and Perl code refs
Crypt-OpenSSL-Guess AKIYM 0.01 Guess OpenSSL include path
DBIx-Result-Convert-JSONSchema MALISHEW 0.01 Convert DBIx result schema to JSON schema
Dancer2-Plugin-Map-Tube MANWAR 0.01 Dancer2 add-on for Map::Tube.
Data-Cuid ZAKAME 0.01 collision-resistant IDs
Data-SExpression-Util MGV 0.000_001 routines for processing linked lists
Data-Sah-CoerceRule-array-str_int_range PERLANCAR 0.001 Coerce array of ints from string in the form of "INT1-INT2"
Data-Sah-CoerceRule-array-str_int_range_and_comma_sep PERLANCAR 0.001 Coerce array of ints from comma-separated ints/int ranges
DateTime-Format-Genealogy NHORNE 0.01 Create a DateTime object from a Genealogy Date
Device-Gyro-IXBLUE TROXEL 1.0 Perl module to interface with a IXBLUE Gyro
Dist-Zilla-MintingProfile-FB11 ALTREUS 0.016 Mints a new FB11 site
Dist-Zilla-Plugin-ReadmeAddDevInfo RENEEB 0.01 Dist::Zilla::Plugin::ReadmeAddDevInfo – add info how to contribute to the project
Dita-Validate PRBRENAN 20180421 In situ validation of XML parse trees representing OASIS DITA documents.
EPFL-Service-Open WILLBELL 1.00 Open the EPFL website (service) associated with the
File-ContentStore BOOK 1.000 A store for file content built with hard links
File-Copy-Recursive-Reduced JKEENAN 0.001 Recursive copying of files and directories within Perl 5 toolchain
Finance-Indodax PERLANCAR 0.008 Trade with Indodax.com using Perl
Game-TextPatterns JMATES 0.01 generate patterns of text
Geo-GDAL-FFI AJOLMA 0.01 A foreign function interface to GDAL
Geo-Privacy DWRIGHT 0.01 Information about privacy/GDPR regulations by state
Graphics-Grid SLOYD 0.0000_01 An incomplete port of the R "grid" library to Perl
Image-Find-Paths PRBRENAN 20180429 Locate the longest line in an image.
JIP-DataPath VLADIMIRZ 0.01 provides a way to access data elements in a deep, complex and nested data structure.
Linux-Perl FELIPE 0.01 Linux system calls with pure Perl
Locale-Country-EU MATTSIZLE 0.001 Module to check if a country is in the European Union ( EU ) using various ISO data formats
Log-Log4perl-Appender-LogGer PERLANCAR 0.001 Log to Log::ger
Map-Tube-Frankfurt RENEEB 0.01 Map::Tube::Frankfurt – interface to the Frankfurt S- and U-Bahn map
Map-Tube-Madrid MANWAR 0.01 Interface to the Madrid Metro Map.
Map-Tube-Nuremberg STELIM 0.01 Map::Tube::Nuremberg – interface to the Nuremberg U-Bahn map
Map-Tube-Server MANWAR 0.01 Dancer2 based server for Map::Tube.
MarkMoreDown KIAVASH 0.000030 markdown parser
Markmoredown KIAVASH 0.000031 markdown parser
Math-Utils-XS GONZUS 0.000002 Some math utility functions implemented in XS
Menlo-Legacy MIYAGAWA 1.9019 Legacy internal and client support for Menlo
Mojo-Feed DOTAN 0.13 Mojo::DOM-based parsing of RSS & Atom feeds
Mojolicious-Command-generate-localplugin RENEEB 0.01 Plugin generator command
Mojolicious-Plugin-CSPHeader LDIDRY 0.01 Mojolicious Plugin to add Content-Security-Policy header to every HTTP response.
Mojolicious-Plugin-ExportExcel WFSO 0.01 The great new Mojolicious::Plugin::ExportExcel!
Mojolicious-Plugin-GzipStatic LDIDRY 0.01 Mojolicious Plugin to to compress the static files before serving them.
Mojolicious-Plugin-NamedHelpers TYLDUM 0.01 Mojolicious Plugin
MooX-Async-Console CHOHAG 0.103 Attach a console to an async module
Music-ScaleNote GENE 0.01 Position of notes in a scale
Net-ISC-DHCPClient JATU 0.01 ISC dhclient lease reader
Oracle-ZFSSA-Client WHINDS 0.01 Oracle ZFS Storage Appliance RESTful API Connector
Outlook-Mail-Count LINUS 0.01 The great new Outlook::Mail::Count!
PDL-Cluster MOOCOW v1.54.001 Perl interface to the C Clustering Library with PDL support
PERLCORE-Predicates-IsEven ECARROLL 0.01 An implementation of JS is-even
PGObject-Util-AsyncPool EINHVERFR 0.01 An Async Connection Pooler for PGObject
PMLTQ-Suggest MATY 0.0.1 Tool for generating simple PMLTQ query based on given nodes
Panda-next SYBER v0.1.0 Replacement for next::method, performing very fast, and super::method (next-by-mro), with Perl and C++ interface.
RT-Extension-InlineAudioVideoAttachments GIBUS 0.01 RT-Extension-InlineAudioVideoAttachments Extension
Report_HTML_DB HIMEWEN 0.01 DBI Model Class
Role-NotSoTiny FERREIRA 0.1.0 Experiment with Role::Tiny / Role::NotSoTiny->make_role()
SMS-Send-Iletimerkezi DUMLU 0.01 SMS::Send driver for iletimerkezi.com
Serge-Smartcat PDORONIN 0.01 Maintain tag
Serge AFAN v1.3.1 Solution for continuous localization
Shorthand-Entropy-UseLocal PERLANCAR 0.001 Use local entropy source
Table-PreAnalysis TULAMILI 0.001 The great new Table::PreAnalysis!
Table-PreCheck TULAMILI 0.001 The great new Table::PreCheck!
Task-Bootstrap-Perl-CPAN SCHWIGON 0.003 Dependencies for App::Bootstrap::Perl – CPAN bundle
Task-Kensho-All DBOOK 0.39 Install all of Task::Kensho
Taskwarrior-Kusarigama-Plugin-Command-Shelf SSORICHE 0.001 Move tasks to and from the shelf.
Test-Pod-Links SKIRMESS 0.001 Test Pod for invalid HTTP/S links
Text-Gitignore VTI 0.01 Match .gitignore patterns
Text-Markmoredown KIAVASH 0.000032 MarkMoreDown parser
Tree-Interval-Fast AVULLO v0.0.1 Perl extension for efficient creation and manipulation of interval trees.
UUID-URandom DAGOLDEN 0.001 UUIDs based on /dev/urandom or the Windows Crypto API
Web-Mention JMAC 0.1 Implementation of the IndieWeb Webmention protocol
Web-Microformats2 JMAC 0.02 Read Microformats2 metadata from HTML or JSON
WebService-GetSongBPM GENE 0.01 Access to the getsongbpm.com API
WebService-S3-Tiny CVLIBRARY 0.001 Perl module for using S3 or compatible APIs
Webservice-Swapi KIANMENG 0.1.0 A Perl module to interface with the Star Wars API webservice.
WordList-Mod PERLANCAR 0.001 Modified wordlist
WordList-Mod-BinarySearch PERLANCAR 0.001 Provide word_exists() that uses binary search
WordList-Mod-Bloom PERLANCAR 0.001 Provide word_exists() that uses bloom filter
WordList-Number-Prime-First10000 PERLANCAR 0.001 First 10,000 prime numbers
WordList-Test-Dynamic-Number-10000 PERLANCAR 0.001 10 million numbers from "00001" to "10000"
WordList-Test-Dynamic-Number-10Million PERLANCAR 0.001 10 million numbers from "00000001" to "10000000"
WordList-Test-Number-1Million PERLANCAR 0.001 1 million numbers from "0000001" to "1000000"
Yahoo-Weather-Api SPAJAI 1.00 The great new 2018 Yahoo::Weather::Api
astro-unit SPAJAI 1.00 Astronomical unit conversion with high precision and large number support
common-header ZDM v0.1.0 re-exporting the set of standard perl pragmas
continuous-delivery-template JOENIO 0.01 continuous delivery workflow dockerhub, gitlab, and cpan
locale-country-eu MATTSIZLE 0.001 Perl extension for determining if a country is within the EU using various ISO values
slot JEFFOBER 0.01 Simple, efficient, comple-time class declaration

List of new CPAN distributions – Mar 2018

dist author version abstract
Acme-Keyakizaka46 OKAWARI 0.0.1 All about Japanse idol group "Keyakizaka46"
Acme-YAPC-Okinawa-Bus ANATOFUZ 0.01 It's Tweet shere
Alien-KentSrc KIWIROY 0.2 Fetch/build/stash Kent src from http://hgdownload.cse.ucsc.edu/admin/
Alien-Saxon ETJ 0.01 Distribute and make available as shared Saxon 9 JAR file
Alien-gdal SLAFFAN 1.00 Find or build gdal
AnyEvent-Connector TOSHIOITO 0.01 tcp_connect with transparent proxy handling
AnyEvent-SOCKS-Client ZLOBUS 0.01 AnyEvent-based SOCKS client!
AnyEvent-SparkBot AKALINUX 0.001 Cisco Spark WebSocket Client for the AnyEvent Loop
App-BloomUtils PERLANCAR 0.001 Utilities related to bloom filters
App-Egaz WANGQ 0.0.10 It's new $module
App-LocaleCodesUtils PERLANCAR 0.001 Utilities related to locale codes
App-Netsync DMTUCKER 3 network/database synchronization library
App-SpamcupNG ARFREITAS 0.001 module to export functions for spamcup program
App-diceware JOROL 0.01 A simple Diceware passphrase generator.
Bash-Completion-Plugins-Sqitch KWAKWA 0.01 bash completion for Sqitch
Bot-ChatBots-Trello POLETTIX 0.001 Trello adapter for Bot::ChatBots
Bundle-Locale-CLDR-Eurozone JGNI v0.32.0 Locale::CLDR – Data Package ( )
Bundle-Locale-CLDR-Subsaharanafrica JGNI v0.32.0 Locale::CLDR – Data Package ( )
Bundle-Locale-CLDR-Unitednations JGNI v0.32.0 Locale::CLDR – Data Package ( )
Business-Inventory-Valuation PERLANCAR 0.001 Calculate inventory value/unit price (using LIFO or FIFO)
CLI-ComputerFiles-Util TULAMILI 0.101 dirhier and madeafter. To supplement Unix/Linux commands for handling Files.
Caller-Easy WORTHMINE 0.01 less stress to remind returned list from CORE::caller()
DBIx-Class-InflateColumn-DT NOHUHU v0.1.0 DBIx::Class column inflator into DT objects
Data-BLNS DCONWAY 20182514.062550 A Perl interface to the Big List of Naughty Strings
Data-DFA PRBRENAN 20180322 Deterministic finite state parser from regular expression.
Data-Dump-Sexp MGV 0.001 convert arbitrary scalars to s-expressions
Data-NFA PRBRENAN 20180328 Non deterministic finite state machine from regular expression.
Data-ObjectStore CANID 1.1 Object store
Data-Sah-Coerce-perl-str-str_toupper PERLANCAR 0.001 Coerce string to upper case
Data-Sah-Coerce-perl-str-str_trim PERLANCAR 0.001 Trim whitespaces at the beginning and end of string
Dist-Inkt-Profile-KJETILK KJETILK 0.100 a Dist::Inkt profile for KJETILK
Dist-Inkt-Role-Git KJETILK 0.001 Git functions for Dist::Inkt
Dist-Zilla-Plugin-UseBuildPL VLYON 0.1 BYOB (Bring Your Own Build.PL)
Ethereum-RPC-Client BINARY 0.02 Ethereum JSON-RPC Client
Eval-Util PERLANCAR 0.001 Utilities related to eval()
Finance-Currency-Convert-ECBdaily DETAILS 0.01 convert currencies using ECBdaily
Float-Util PERLANCAR 0.001 Utilities related to floating point numbers
Genealogy-Relationship DAVECROSS v0.0.1 calculate the relationship between two people
Google-ContentAPI BGERRARD 1.00 Interact with Google's Content API for Shopping
H EXODIST 0.001 Method wrappers for hash construction.
HTML-Tidy5 PETDANCE 0.01 HTML validation in a Perl object
HTTP-Upload-FlowJs CORION 0.01 handle resumable multi-part HTTP uploads with flowjs
ICC-Profile BIRKETT 0.6 A set of object-oriented modules implementing ICC profiles and related color functions
Ithumb-XS BRDUCH v0.1.0
Jacode INA 2.13.4.19 Perl program for Japanese character code conversion
Jacode4e INA 2.13.6.4 jacode.pl-like program for enterprise
JavaScript-Duktape-XS GONZUS 0.000030 Perl XS binding for the Duktape Javascript embeddable engine
Lingua-EN-Opinion GENE 0.01 Measure the positive/negative sentiment of text
List-Util-MaybeXS HAARG 1.50 List::Util but with Pure Perl fallback
Locale-CLDR-Locales-Ccp JGNI v0.32.0 Locale::CLDR – Data Package ( Perl localization data for Chakma )
Locale-CLDR-Locales-Nds JGNI v0.32.0 Locale::CLDR – Data Package ( Perl localization data for Low German )
Locale-CLDR-Locales-Sd JGNI v0.32.0 Locale::CLDR – Data Package ( Perl localization data for Sindhi )
Locale-CLDR-Locales-Tg JGNI v0.32.0 Locale::CLDR – Data Package ( Perl localization data for Tajik )
Locale-CLDR-Locales-Tt JGNI v0.32.0 Locale::CLDR – Data Package ( Perl localization data for Tatar )
Locale-CLDR-Locales-Wo JGNI v0.32.0 Locale::CLDR – Data Package ( Perl localization data for Wolof )
Log-ger-Level-Set PERLANCAR 0.001 Set log level
Log-ger-LogException PERLANCAR 0.001 Log warn()/die()
Markua-Parser SZABGAB 0.01 Parsing Markua files and for writing books, generating DOM
Memorator POLETTIX 0.001 Remind of events via Minion
Mojo-IOLoop-Stream-Role-LineBuffer DBOOK 0.001 Read and write streams by lines
Mojolicious-Plugin-AutoRefresh PREACTION 0.001 Automatically reload open browser windows when your application changes
Mojolicious-Plugin-AutoReload PREACTION 0.001 Automatically reload open browser windows when your application changes
Mojolicious-Plugin-Events CRLCU 0.01 A plugin for dispatching and handling sync/async events
Mojolicious-Plugin-Facets CAFEGRATZ 0.01 Multiple facets for your app.
Mojolicious-Plugin-GetSentry CRLCU 1.0 Sentry client for Mojolicious
Mojolicious-Plugin-RoutesConfig BEROV 0.03 Describe routes in configuration
Mojolicious-Plugin-Validate-Tiny CRLCU 0.17 Lightweight validator for Mojolicious
MooX-Role-JSON_LD DAVECROSS v0.0.1 Easily provide JSON-LD mark-up for your objects.
MooseX-RelClassTypes TOMGRACEY 0.01 specify a class name in an attribute isa relative to the current class
Net-Address-IP-Cipher HUGUEI 0.1 IPv6 / IPv4 address encryption to a valid address, for pseudo anonymization.
Net-Pface XMOLEX 1.01 Perl extension for pface.ru simple API
POE-Component-ElasticSearch-Indexer BLHOTSKY 0.001 POE session to index data to ElasticSearch
Package-Prototype CODEHEX 0.01 Super easily to create prototype object
Perinci-CmdLine-cryp PERLANCAR 0.001 Perinci::CmdLine::Lite to read entities from config
Perl-Critic-Policy-Variables-ProhibitLoopOnHash XSAWYERX 0.001 Don't write loops on hashes, only on keys and values of hashes
Plack-Middleware-ServerTiming AKIYM 0.01 Performance metrics in Server-Timing header
RPi-StepperMotor STEVEB 2.3601 Control a typical stepper motor with the Raspberry Pi
RT-Authen-OAuth2 BPS 0.10 RT-Authen-OAuth2 Extension
RT-Extension-BecomeUser MBP 0.04 RT-Extension-BecomeUser Extension
RT-Extension-BooleanCustomField GIBUS 0.01 RT-Extension-BooleanCustomField Extension
Regex-Range-Number LNATION 0.01 Generate number matching regexes
Regexp-Common-json PERLANCAR 0.001 Regexp patterns to match JSON
Regexp-Pattern-JSON PERLANCAR 0.001 Regexp patterns to match JSON
Release-Checklist HMBRAND 0.02 A QA checklist for CPAN releases
Sah-Schemas-Country PERLANCAR 0.001 Various Sah schemas related to country codes/names
Sah-Schemas-Currency PERLANCAR 0.001 Various Sah currency schemas
Sah-Schemas-Language PERLANCAR 0.001 Various Sah language schemas
SkewHeap JEFFOBER 0.01 A fast heap structure for Perl
Slovo BEROV v2018.03.24 В началѣ бѣ Слово
String-Validator-Language BRAINBUZ 1.95 Languages for String::Validator
Struct-Match LNATION 0.01 Exact Match (SCALAR|HASH|ARRAY)'s.
Switch-Again LNATION 0.01 Switch`ing
Sys-Linux-Syscall-Execve SIMCOP 0.10 A raw execve() wrapper that preserves memory addresses
Table-Hack TULAMILI 0.003 The great new Table::Hack!
Task-BeLike-SHLOMIF SHLOMIF 0.0.1 Be like SHLOMIF / Shlomi Fish.
Template-Nest TOMGRACEY 0.01 manipulate a generic template structure via a perl hash
Test-DocClaims SCOTTLEE 0.001 Help assure documentation claims are tested
Test2-Tools-xUnit CVLIBRARY 0.001 Perl xUnit framework built on Test2::Workflow
Text-Sprintf-Length PERLANCAR 0.001 Calculate length of sprintf()-formatted string
Time-Moment-Role-TimeZone DBOOK 0.001 Adjust Time::Moment with time zone objects
WWW-FCM-HTTP XAICRON 0.01 HTTP Client for Firebase Cloud Messaging
Webservice-GAMSTOP BINARY 0.001 GAMSTOP API Client Implementation
WordLists-Char-Latin1 PERLANCAR 0.001 Lists of Latin1 characters
WordLists-Password-10Million PERLANCAR 0.002 Lists of popular passwords (10_million_password_list)
WorldCat-API LOLOBOROS 0.001 turns baubles into trinkets
X11-XRandR DJERIUS 0.01 An interface to the X11 XRandR extension
XML-Saxon-XSLT3 ETJ 0.009 process XSLT 3.0 using Saxon 9.x.
YAML-Dump POLETTIX 1.81 Dump stuff, (simplified) YAML style
Zcash-RPC-Client CYCLENERD 1.00 Zcash JSON RPC Client
cli-crosstable TULAMILI 1.01 A simple script to produce crosstable (2-way contingency table) with various switch options.
cli-latextable TULAMILI 0.112
cli-numbers-random TULAMILI 0.01 CLIs for generating random numbers.
cli-numbers-util TULAMILI 0.31 Handling number stream input
cli-rows-util TULAMILI 0.31 Utiliites handling text stream segmented by "new line" characters.
cli-rows-venn TULAMILI 0.001 showing the cardinal concerning superposition of 2,3 or 4 sets.
cli-tsv-keyvalue TULAMILI 0.31 The great new cli::tsv::keyvalue!
cli-tsv-latextable TULAMILI 0.1
cli-tsv-util TULAMILI 0.51 The great new cli::tsv::util!

List of new CPAN distributions – Feb 2018

dist author version abstract
API-MikroTik ANPARKER 0.23 Non-blocking MikroTik API interface
Acme-BadFont HAARG 1.000000 Cope with a bad font in your editor
Acme-CPANModules-fgets PERLANCAR 0.001 fgets() implementations in Perl
Acme-CPANModulesBundle-Import-PerlAdvent-2017 PERLANCAR 0.001 Modules mentioned in Perl Advent Calendar 2017
Acme-Check-PAUSE-Version-Order HAARG 1.001001 Testing the order of VERSION indexing in PAUSE
Acme-Songmu SONGMU v0.0.1 Songmu's sample module
Algorithm-Bertsekas CLAUDIOFS 0.10 auction algorithm for the assignment problem.
Apache-Defaults SGRAY 1.00 Get default settings for Apache httpd daemon
App-ColorThemeUtils PERLANCAR 0.001 CLI utilities related to color themes
App-CreateAcmeCPANModulesImportModules PERLANCAR 0.001 Create Acme::CPANModules::Import::* modules
App-ForKids-LogicalPuzzleGenerator PBIERNACK 0.02 The great new App::ForKids::LogicalPuzzleGenerator!
App-ForKids-LogicalPuzzleGenerator-master PBIERNACK 0 The great new App::ForKids::LogicalPuzzleGenerator!
App-Glacier SGRAY 1.00 command line utility for accessing Amazon Glacier storage
App-GoogleAuthUtils PERLANCAR 0.001 Utilities related to Google Authenticator
App-ShellCheckWiki XXFELIXXX 0.01 Check the wiki for details about shellcheck errors.
App-Timestamper-Format SHLOMIF 0.0.1 prefix lines with formatted timestamps of their arrivals.
App-genpw-base64 PERLANCAR 0.001 Generate random password using base64 characters
App-throttle PERLANCAR 0.001 Bandwidth limiting pipe
AppBase-Grep-ColorSchemes-Kuler PERLANCAR 0.001 Some popular color schemes from Adobe Kuler
Array-Circular ZARQUON 0.001 Provide an array data structure that can go around in circles
Bencher-Scenario-CryptDicewareWordlistModules PERLANCAR 0.001 Benchmark startup overhead of Crypt::Diceware::Wordlist::* modules
Bio-MUST-Apps-HMMCleaner ARNODF 0.180450 Main class for HmmCleaner
Bio-MUST-Apps-HmmCleaner ARNODF 0.180450 Main class for HmmCleaner
CPAN-Test-Dummy-Perl5-BuildRequires SREZIC 0.01 Dummy test module with a build_requires dependency
CPAN-Test-Dummy-Perl5-Requires SREZIC 0.01 Dummy test module with a requires dependency
Class-DbC ARUNBEAR 0.000001 Add Design By Contract easily and flexibly to existing code.
Color-Theme-Role PERLANCAR 0.020 Role for class wanting to support color themes
Color-Theme-Util PERLANCAR 0.020 Utility routines related to color themes
Color-Theme-Util-ANSI PERLANCAR 0.001 Utility routines related to color themes and ANSI code
Config-AWS JJATRIA 0.01 Parse AWS config files
Config-Pg-ServiceFile KWAKWA 0.01 PostgreSQL connection service file parser
Control-CLI-Extreme LSTEVENS 1.00 Interact with CLI of Extreme Networking products over any of Telnet, SSH or Serial port
CtrlO-Crypt-XkcdPassword DOMM 1.000 Yet another XKCD style password generator
DBIx-BatchChunker GSG 0.90 Run large database changes safely
DBIx-Core-Handle-ReturnValue DSONNTAG 0.01 subclassed DBI connection handle
DT NOHUHU v0.1.0 DWIM wrapper for DateTime
Dancer2-Plugin-SPID AAR 0.10 SPID authentication for Dancer2 web applications
Data-Visitor-Tiny DAGOLDEN 0.001 Recursively walk data structures
Devel-IPerl-Plugin-EnvironmentModules KIWIROY 0.02 Environment Modules
Devel-IPerl-Plugin-Perlbrew KIWIROY 0.03 interact with perlbrew in Jupyter IPerl kernel
Devel-Scope XXFELIXXX 0.01 Debug Verbosity based on Scope
Device-Chip-Adapter-CH341A PEVANS 0.01 a Device::Chip::Adapter implementation
Dist-Zilla-Plugin-WordListC PERLANCAR 0.001 Plugin to use when building WordListC::* distribution
Encode-Simple DBOOK 0.001 Encode and decode text, simply
Finance-GDAX-Lite PERLANCAR 0.001 Client API library for GDAX (lite edition)
GUIDeFATE SAIFTYNET 0.05 Graphical User Interface Design From A Text Editor
Games-LatticeGenerator PBIERNACK 0.02 The Games::LatticeGenerator for cut&fold.
Games-LatticeGenerator-master PBIERNACK 0 The Games::LatticeGenerator for cut&fold.
Generic-ColorTheme-Kuler PERLANCAR 0.001 Color themes from Adobe Kuler
Getopt-toHash AMMODULES 0.001 Turns command line arguments into hash and validates.
Github-Backup STEVEB 1.01 Back up your repositories, issues, gists and more
GlusterFS-GFAPI-FFI POTATOGIM 0.3 FFI Perl binding for GlusterFS libgfapi
HTTP-Tiny-Patch-Cache PERLANCAR 0.001 Cache HTTP::Tiny responses
Hush LETO 0.01 HushList-powered secure messaging
IO-ReadHandle-Include LSTROUS v1.0.0 A filehandle for reading with include facility
IxNetwork DGALAN 8.40 IxNetwork API Perl Bindings
JSON-ize MAJENSEN 0.1 Use JSON easily in one-liners
JSONAPI-Document ZIALI 0.1 Turn DBIx results into JSON API documents.
JSONize MAJENSEN 0.1 Use JSON easily in one-liners
LibreCat-Auth-SSO NJFRANCK 0.01 role for Single Sign On (SSO) authentication
List-Util-Uniq PERLANCAR 0.001 List utilities related to finding unique items
MARC-Schema JOROL 0.01 Specification of the MARC21 format
MIDI-Ngram GENE 0.01 Find the top repeated note phrases of a MIDI file
Magrathea-API CMS 0.9.0 Easier access to the Magrathea NTS API
Module-FromPerlVer LEMBARK v0.0.1 install modules compatible with the running perl.
Mojo-Transmission JHTHORSEN 0.01 Client for talking with Transmission BitTorrent daemon
Mojolicious-Plugin-JSONAPI ZIALI 0.1 Mojolicious Plugin for building JSON API compliant applications.
Moo-Role-ToJSON KWAKWA 0.01 a Moo role for a TO_JSON method
Net-SPID AAR 0.10 SPID implementation for Perl
Net-Statsd-Lite RRWO v0.3.0 A lightweight StatsD client that supports multimetric packets
Net-Statsd-Tiny RRWO v0.1.0 A tiny StatsD client
NpsSDK INGENICO 1.3
NpsSDK-Nps INGENICO v1.0.0
Open-This OALDERS 0.000001 Try to Do the Right Thing when opening files
Opsview-RestAPI DUNCS 1.180570 Interact with the Opsview Rest API interface
Padre-Plugin-JSONUtilities ADAMDH 0.10 Support for beautifying/compressing JSON directly in Padre.
Parallel-Subs ATOOMIC 0.001 Simple way to run subs in parallel and process their return value in perl
Pg-ServiceFile KWAKWA 0.01 Basic PostgreSQL connection service file interface
Phone-Number CMS 1.1.1 Module to hold a phone number from a UK-centric point of view.
Plack-Auth-SSO NJFRANCK 0.011 role for Single Sign On (SSO) authentication
Plack-Middleware-StatsPerRequest DOMM 0.042 Measure HTTP stats on each request
Pod-Term TOMGRACEY 0.01 Yet another POD Parser for terminal (ie command line) output
Pod-Weaver-Plugin-WordListC PERLANCAR 0.001 Plugin to use when building WordListC::* distribution
SMS-Send-NANP-Twilio MRDVT 0.01 SMS::Send driver for Twilio
Steemit-WsClient SNKOEHN 0.01 perl lirary for interacting with the steemit websocket services!
Sympatic MARCC 0.0 A boilerplate to enforce the coding style of Sympa mailing list manager
Task-BeLike-KWAKWA KWAKWA 0.01 Be more like KWAKWA – use the modules he likes!
Term-CLI SBAKKER 0.03001 CLI interpreter based on Term::ReadLine
Test-Mojo-Role-Debug-JSON ATOOMIC 0.001 a JSON extension to Test::Mojo::Role::Debug
Text-CSV-Pivot MANWAR 0.01 Transform CSV file into Pivot Table format.
Text-VerticalTable BAYASHI 0.01 Create a nice formatted `key, value` table vertically
Tie-Hash-Sorted-XS MGV 0.000_001 hash with ordered keys backed by binary search tree
URI-Fast JEFFOBER 0.01 A fast(er) URI parser
Unix-Groups-FFI DBOOK 0.001 Interface to Unix group syscalls
Variable-Declaration KFLY 0.01 declare with type constraint
WebService-Hooktheory GENE 0.01 Access to https://www.hooktheory.com
WebService-YDMM ANATOFUZ 0.01 It's yet another DMM sdk.
WordListC PERLANCAR 0.1.0 Word lists (custom sorted)
WordListsC-Password-10Million PERLANCAR 0.001 Lists of popular passwords (10_million_password_list)
WordListsC-Password-SecLists PERLANCAR 0.001 Lists of popular passwords from SecLists

List of new CPAN distributions – Jan 2018

dist author version abstract
0.1.1 CSANDEEP 0
Acme-CPANLists-CryptoExchange PERLANCAR 0.001 Modules that interface to cryptocurrency exchanges
Acme-CPANLists-Import-PerlAdvent-2017 PERLANCAR 0.001 Modules mentioned in Perl Advent Calendar 2017
Acme-CPANModules PERLANCAR 0.1.0 CPAN modules
Acme-CPANModules-CryptoExchange-API PERLANCAR 0.001 Modules that interface to cryptocurrency exchanges
Acme-CPANModules-FooThis PERLANCAR 0.001 Export your directory over various channels
Acme-CPANModulesBundle-PERLANCAR PERLANCAR 0.001 PERLANCAR's collection of Acme::CPANModules::* modules
ActiveRecord-Simple-updated SHOOTNIX 1.00 Simple to use lightweight implementation of ActiveRecord pattern.
Algorithm-ConstructDFA2 BJOERN 0.01 Deterministic finite automaton construction
Algorithm-CurveFit-Simple TTKCIAR 1.00 Convenience wrapper around Algorithm::CurveFit
Alien-libcmark_gfm DHARDISON 0.01 Find or Build libcmark-gfm
AnyEvent-PgRecvlogical MYDMNSN 0.001 perl port of pg_recvlogical
AnyEvent-ZabbixSender MLEHMANN 0.1 simple and efficient zabbix data submission
App-BIP39Utils PERLANCAR 0.001 Collection of CLI utilities related to BIP39
App-CryptoCurrencyUtils PERLANCAR 0.001 CLI utilities related to cryptocurrencies
App-GoogleSearchUtils PERLANCAR 0.001 CLI utilites related to google searching
App-NDTools MIXAS v0.5.0 diff/patch/process/query tools for nested structures
App-Scheme79asm MGV 0.001 assemble sexp to Verilog ROM for SIMPLE processor
App-WHMCSUtils PERLANCAR 0.002 CLI utilities related to WHMCS
App-abgrep PERLANCAR 0.001 Print lines matching a pattern
App-cpanmodules PERLANCAR 0.001 The Acme::CPANModules CLI
App-euro_lotto MIKEKELLY 0.01
App-genpw PERLANCAR 0.001 Generate random password
App-genpw-base56 PERLANCAR 0.001 Generate random password using base56 characters
App-genpw-base58 PERLANCAR 0.001 Generate random password using base58 characters
App-genpw-id PERLANCAR 0.004 Generate password from combination of Indonesian words
App-genpw-wordlist PERLANCAR 0.003 Generate password with words from WordList::*
App-rsynccolor PERLANCAR 0.001 Add some color to rsync output
App-squidauth PERLANCAR 0.001 A simple authenticator program for Squid
AppBase-Grep PERLANCAR 0.001 A base for grep-like CLI utilities
AtteanX-Serializer-RDFa KJETILK 0.001_01 RDFa Serializer for Attean
Bencher-Scenario-ListFlatten PERLANCAR 0.001 Benchmark various List::Flatten implementaitons
Bencher-Scenarios-BIP39 PERLANCAR 0.001 Benchmark various implementations of BIP39
Bible-OBML-Gateway GRYPHON 1.01 Bible::OBML::Gateway – Bible Gateway content conversion to Open Bible Markup Language (OBML)
Bio-MUST-Apps-TwoScalp DBAURAIN 0.180160 Main class for two-scalp tool
Bio-SearchIO-blastxml CJFIELDS 1.70 A SearchIO implementation of NCBI Blast XML parsing.
Bitcoin-BIP39 PERLANCAR 0.001 A BIP39 implementation in Perl
Business-cXML LIS v0.6.0 Perl implementation of cXML messaging
CPP-catch-test SYBER v1.0.0
Crypt-FileHandle PHILBURT 0.02 encrypted FileHandle
Crypt-Sodium-Nitrate HUGMEIR 0.01 Don't let your sodium levels get too high!
CryptoCurrency-Catalog PERLANCAR 20180106 Catalog of cryptocurrencies
CryptoExchange-Catalog PERLANCAR 20180109 Catalog of cryptoexchanges
DBIx-QuickDB EXODIST 0.000001 Quickly start a db server.
Data-Password-zxcvbn DAKKAR 1.0.0 Dropbox's password estimation logic
Devel-ModuleBreaker MOB 0.01 set breakpoints for every subroutine in a namespace simultaneously
Device-TPLink VERLIN 0.01 Access TP-Link Device APIs from Perl
Dist-Zilla-Plugin-Acme-CPANModules PERLANCAR 0.001 Plugin to use when building Acme::CPANModules::* distribution
Dist-Zilla-Plugin-Acme-CPANModules-Blacklist PERLANCAR 0.001 Blacklist prereqs using an Acme::CPANModules module
Dist-Zilla-Plugin-MetaMergeFile LEONT 0.001 Add arbitrary metadata using a mergefile
Dist-Zilla-PluginBundle-Author-TABULO TABULO 0.197 A plugin bundle for distributions built by TABULO
EixoUtils ALAMBIKE v0.8.1 Collection of utilities for Linux
FB3 EGOROD 0.01 API for manipulating FB3 files
FB3-Convert EGOROD 0.01 scripts and API for converting FB3 from and to different formats
File-Find-Rex ROLANDAY 1.00 Combines simpler File::Find interface with support for
Firefox-Marionette DDICK 0.01 Automate the Firefox browser with the Marionette protocol
Geo-Coordinates-MGRS-XS UMELDT 0.01 Perl extension for converting MGRS coordinates to UTM or lat/lon.
Git-Repository-Plugin-Dirty DMUEY 0.01 methods to inspect the dirtiness of a git repository
Graph-Feather BJOERN 0.01 Like Graph::Directed basics, but with SQLite backend
List-Rank PERLANCAR 0.001 Ranking of list elements
List-StackBy BJOERN 0.01 Group runs of similar elements
MarpaX-Languages-PowerBuilder SEBKIRCHE 0.01 PowerBuilder sources parsers based on Marpa::R2
Math-GComplex TRIZEN 0.01 Generic complex number library.
Math-GF POLETTIX 0.001 Galois Fields arithmetics
Module-Spec FERREIRA 0.1.0 Load modules based on specifications
Mojolicious-Command-generate-resources BEROV 0.03 Generate resources from database for your application
Mojolicious-Plugin-AssetPack-Pipe-ElmLang CSANDEEP 0.1
Mojolicious-Plugin-Paging WFSO v0.0.1 Mojolicious paging Plugin
Mojolicious-Plugin-Pubsub COFFEE 0.001 Pubsub plugin for Mojolicious
Mojolicious-Plugin-SessionStorage WFSO v0.0.3 session data store plugin for Mojolicious
MooseX-Attribute-Multibuilder YANICK 0.0.1 Have several attributes share the same builder
Net-ACME2 FELIPE 0.01 Client logic for the ACME protocol
Net-Async-MPD JJATRIA 0.002 A non-blocking interface to MPD
Net-Ethereum-Swarm ITMFROLOV 0.01 Perl Framework for a distributed storage platform and content distribution service Ethereum Swarm.
OPC EGOROD 0.01 API for low-level manipulations with packages in OPC format (ECMA-376 Part 2)
PDL-Algorithm-Center DJERIUS 0.06 Various methods of finding the center of a sample
PICA-Data-gbv JOROL 0.35 PICA record processing
Patch-rand-Secure PERLANCAR 0.001 Replace rand() with Math::Random::Secure's version
Perinci-Examples-Bin-Any-Config PERLANCAR 0.001 Example CLI scripts related to config files
Perinci-Examples-Bin-Any-SahSchemas PERLANCAR 0.001 Example CLI scripts to test various Sah schemas
Perinci-Examples-Config PERLANCAR 0.001 Examples related to config files
Perinci-Examples-SahSchemas PERLANCAR 0.001 Example for using various schemas
Perinci-Sub-XCompletionBundle-CryptoCurrency PERLANCAR 0.001 Completion routines related to cryptocurrency
Plack-Middleware-Statsd RRWO v0.1.0 send statistics to statsd
Plack-Middleware-TimeOverHTTP RRWO v0.1.0 time over HTTP middleware
Pod-From-Acme-CPANModules PERLANCAR 0.001 Create "INCLUDED MODULES" POD sections from $LIST
Pod-Weaver-Plugin-Acme-CPANModules PERLANCAR 0.001 Plugin to use when building Acme::CPANModules::* distribution
PowerBuilder-DataWindow SEBKIRCHE 0.01 PoweBuilder datawindows helpers and diagnostics in Perl, based on MarpaX::Languages::Powerbuilder Marpa parsers
Proquint MLAWREN 0.001 Convert to and from proquints
R-DescriptionFile SLOYD 0.001 R package DESCRIPTION file parser
RDF-LinkedData-RWHypermedia KJETILK 0.001_01 Experimental read-write hypermedia support for Linked Data
RDF-Trine-Serializer-RDFa KJETILK 0.01 RDFa Serializer for RDF::Trine
RDF-TrineX-Compatibility-Attean KJETILK 0.001_01 Compatibility layer between Attean and RDF::Trine
Random-Any PERLANCAR 0.001 Try to use Math::Random::Secure::rand(), fallback on builtin rand()
Renard-Incunabula-Document ZMUGHAL 0.004 Base class for representing documents
Renard-Incunabula-Format-Cairo ZMUGHAL 0.004 A document format for Cairo surfaces
Sah-Schemas-Binary PERLANCAR 0.001 Sah schemas related to binary data
Sah-Schemas-CryptoCurrency PERLANCAR 0.001 Various Sah cryptocurrency schemas
Struct-Path-JsonPointer MIXAS 0.01 JsonPointer (rfc6901)
Task-CryptoExchange PERLANCAR 0.001 Modules that interface to cryptocurrency exchanges
Task-CryptoExchange-API PERLANCAR 0.002 Modules that interface to cryptocurrency exchanges
Task-genpw PERLANCAR 0.001 Install the various genpw-* programs
Test-BDD-Cucumber-Definitions IVANYCH 0.01 The great new Test::BDD::Cucumber::Definitions!
Test-Reporter-Transport-Metabase-Fallback STRO 1.000 Metabase transport for Test::Reporter with fallback to File transport
Test-Snapshot ETJ 0.01 test against data stored in automatically-named file
Test-Time-HiRes MJEMMESON 0.01 drop-in replacement for Test::Time to work with Time::HiRes
Text-TFIDF-Ngram GENE 0.01 Compute the TF-IDF measure for ngram phrases
Util-EvalSnippet CHOLLOWAY 0.01 eval snippets of code in the context of a caller marker
WebService-BR-BoletoFacil DLIMA 0 Perl low level implementation of the https://boletobancario.com.br/boletofacil brazilian payment gateway.
WebService-Binance RCL 0.016 Interface to Binance
WebService-BitFlyer BAYASHI 0.01 one line description
WebService-Coincheck BAYASHI 0.01 coincheck Perl libraries http://coincheck.jp/
WebService-Cryptopia RCL 0.016 Interface to Cryptopia
Win32-NTFS-Symlink BAYMAX 0.01 Support for NTFS junctions and symlinks on Windows
WordList-ID-BIP39 PERLANCAR 0.001 Indonesian (proposed) word list for BIP 39
WordLists-CryptoCurrency-Catalog PERLANCAR 20180106 Wordlists from cryptocurrency catalog
XML-LibXML-Ferry LIS v0.8.5 Marshall LibXML nodes and native objects
XML-LibXML-Proxy LIS v0.1.1 Force LibXML to use a proxy for HTTP/HTTPS external entities
XS-Logger ATOOMIC 0.001 a basic logger implemented in XS
alias-module PERLANCAR 0.001 Alias one module as another
jacode4e INA 2.13.6.1 jacode.pl-like library for enterprise
version-Normal FERREIRA 0.1.0 More normal forms for version objects

List of new CPAN distributions – Dec 2017

dist author version abstract
AVLTree AVULLO v0.0.2 Perl extension for efficient creation and manipulation of AVL balanced binary trees.
Acme-Eatemup SPROUT 0.01 A list chopper
Alien-Doxyparse JOENIO 0.01 Build and make available the doxyparse tool
Alien-Libasyncns SKAJI 0.001 Alien package for libasyncns
Alien-Pluto WBRASWELL 0.001000 Find Or Download/Build/Install libpluto In Pluto
Alien-SLOCCount JOENIO 0.01 Build and make available the sloccount tool
Alien-Texinfo WBRASWELL 0.001000 Find Or Download/Build/Install libtexinfo In Texinfo
Alien-ZMQ-latest ZMUGHAL 0.001 Alien package for the ZeroMQ library
Alien-lshw ATHREEF 0.001 Perl distribution for lshw
Alt-Alien-ZMQ-Alien-ZMQ-latest ZMUGHAL 0.001 A replacement for Alien::ZMQ that uses Alien::ZMQ::latest
Analizo JOENIO v1.20.0_1 a source code analysis suite
Apache-Config-Preproc SGRAY 1.0 Preprocess Apache configuration files
App-ANSIColorUtils PERLANCAR 0.001 Utilities related to ANSI color
App-Jiffy LJR 0.04 A minimalist time tracking app focused on precision and effortlessness.
App-MonM-Notifier ABALAMA 1.00 a monitoring tool that provides notifications on different communication channels
App-PPE KFLY 0.04 Prettify Perl Error messages
App-PerlShell VINSWORLD 1.00 Perl Shell
App-cpanexec OKLAS 0.01 Execute application within local environment.
App-intrunningsum SHLOMIF 0.0.1 running sum of decimal big integers from stdin or files
App-intsum SHLOMIF 0.0.1 sums decimals big integers from stdin or files – one in each line.
App-lsiommu ATHREEF 0.001 Display IOMMU groups as a tree
App-lsnic ATHREEF 0.001 Display table of network controllers
App-sdif UTASHIRO 3.1.1 sdif and family tools, cdif and watchdiff
Assert-Refute KHEDIN 0.03 unified assertion and testing tool
Authen-U2F-Tester MSCHOUT 0.01 FIDO/U2F Authentication Test Client
Bencher-Scenarios-MathBigFloat PERLANCAR 0.001 A collection of scenarios to benchmark Math::BigFloat
Bio-FastParsers DBAURAIN 0.173450 classes for parsing bioinformatics program output
Bio-MUST-Core DBAURAIN 0.173460 Core classes and utilities for Bio::MUST
Bio-MUST-Drivers DBAURAIN 0.173510 Bio::MUST classes for driving external programs
CPAN-cpanminus-reporter-RetainReports JKEENAN 0.03 Retain reports on disk rather than transmitting them
Code-TidyAll-Plugin-SortLines-IPAddresses KLPTWO 0.0.1 Sort lines of a file containing IP addresses
Complete-PPR PERLANCAR 0.001 Completion routines related to PPR
Convert-Base91 MGV 0.001 XS base91 encoding/decoding
Dancer2-Plugin-DebugDump STEVIED 0.1 [Run debug through Dumper for easier reading]
Dancer2-Plugin-JSManager STEVIED 0.009 Manage website javascript files with the Dancer2 configuration file
Data-Random-Flexible DAEMON 1.00 Fast iflexible profilable randoms
Date-Holidays-KZ BESINT 0.2018.0 Determine Kazakhstan official holidays and business days.
Device-Modbus-ASCII JFRAIRE 0.005 Modbus ASCII communications for Perl
Dist-Zilla-PluginBundle-Author-FERREIRA FERREIRA 0.1.0 Build a distribution like FERREIRA
Doit SREZIC 0.021_50 a scripting framework
ExtUtils-MakeMaker-Attributes DBOOK 0.001 Determine when ExtUtils::MakeMaker attributes are available
FIAS-SQL CELEB 0.01 Модуль Ð´Ð»Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ работы Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ из базы ФИÐC https://fias.nalog.ru/FiasInfo.aspx
File-HomeDir-Tiny SPROUT 0.01 Find your home directory
Finance-BitFlip PERLANCAR 0.001 Trade with bitflip.li using Perl
Finance-Calendar BINARY 0.02 represents the trading calendar.
Finance-Quote-IEX JTPALMER 0.001000 Retrieve stock quotes using the IEX API
Geo-IPinfo IPINFO 1.0 Official Perl module to use ipinfo.io geolocation services
GitLab-API-v4 BLUEFEET 0.01 A complete GitLab API v4 client.
Google-Translate-Languages PRBRENAN 20171206 List of languages and ISO 639 language codes supported by Google Translate
Ham-Device-FT817COMM JRUBIN v1.0.6 Library to control the Yaesu FT817 Ham Radio
Image-JPEG-Size ARC 0.01 find the size of JPEG images
JSON-MaybeUTF8 TEAM 1.000 provide explicit text/UTF-8 JSON functions
Job-Async TEAM 0.001 Asynchronous job queue for IO::Async
Job-Async-Redis TEAM 0.001 Net::Async::Redis backend for Job::Async
Keyword-DEVELOPMENT OVID 0.01 Have code blocks which don't exist unless you ask for them.
Lingua-EN-Segment SKINGTON 0.001 split English-language domain names etc. into words
Log-colorize-Helper VVELOX v0.1.0 Makes searching and colorizing logs trivial with out all the need for piping
Mail-AuthenticationResults MBRADSHAW 1.20171226 Object Oriented Authentication-Results header class
Map-Tube-Copenhagen SLU 0.01 Interface to the Copenhagen Metro map
Map-Tube-Milan MFONTANI 0.001 Interface to the Milan tube map
Math-Bacovia TRIZEN 0.01 Symbolic math library with support for alternative representations.
Math-VectorXYZ RMATTHEW 1.00 Basic 3d vector operations
MetaCPAN-Pod-XHTML HAARG 0.001001 Format Pod as HTML for MetaCPAN
Mojo-IOLoop-Thread TOMK 0.04 Threaded Replacement for Mojo::IOLoop::subprocess
Mojo-Log-Syslog SGRAY 1.0 syslog for Mojo projects
Mojo-Promise-Role-Futurify DBOOK 0.001 Chain a Future from a Mojo::Promise
Mojo-UserAgent-CookieJar-Role-Persistent EJUNGLE 0.001 Persist cookies to Netscape file
Mojo-UserAgent-Role-Queued DOTAN 0.01 A role to process non-blocking requests in a rate-limiting queue.
Mojolicious-Command-bulkget ETJ 0.01 Perform bulk get requests
Mojolicious-Plugin-ErrorTracking-Sentry OSDAKIRA 1.0.0 error traking plugin for Mojolicious with Sentry
Mojolicious-Plugin-LazyImage JHTHORSEN 0.01 Lazy load images
Mojolicious-Plugin-Log-Any DBOOK 0.001 Use other loggers in a Mojolicious application
Mojolicious-Plugin-PgLock ONOKHOV 0.01 postgres advisory locks for Mojolicious application
Mojolicious-Plugin-Prometheus TYLDUM 0.9.1 Mojolicious Plugin
Net-Async-WebSocket-JSON PEVANS 0.01 use JSON-encoded data over WebSockets with IO::Async
Net-Async-ZMQ ZMUGHAL 0.001 IO::Async support for ZeroMQ
Net-Ethereum ITMFROLOV 0.01 Perl extension for blah blah blah
Net-Tor KETHGEN v0.1 Perl extension to control running tor
Number-Format-BigFloat PERLANCAR 0.001 Format Math::BigFloat number
POSIX-Run-Capture SGRAY 0.02 run command and capture its output
PPIx-Literal FERREIRA 0.1.0 Convert PPI nodes into literal values
Perl-PrereqScanner-Scanner-Zim FERREIRA 0.1.0 Scan for modules loaded with Importer::Zim
PerlX-bash BAREFOOT 0.01 tighter integration between Perl and bash
Poloniex-API MIRKOS 0.001 Poloniex API wrapper.
RPC-Switch-Client WIEGEROP 0.01 RPC-Switch client using Mojo(licious).
SVG-Timeline-Compact JVS 0.001 A Moose based SVG Timeline drawing class.
Sah-Schemas-Color PERLANCAR 0.001 Sah schemas related to color codes/names
Store-Digest DORIAN 0.03 Store opaque data objects keyed on their cryptographic digests
StreamFinder TURNERJW 1.00 Fetch actual raw streamable URLs from various radio-station websites.
String-Util-Match PERLANCAR 0.001 String utilities related to matching
Struct-Diff-MergePatch MIXAS 0.01 JSON Merge Patch
Task-BeLike-JAHERO JAHERO 1.173490 JAHERO's frequently-used or favorite modules
Test-APIcast MCICHRA 0.01 Testing framework for APIcast.
Test-Against-Dev JKEENAN 0.03 Test CPAN modules against Perl dev releases
Test-Module-CheckDep-Version STEVEB 0.01 Unusable distribution to test Module::CheckDep::Version
Test-Roo-DataDriven RRWO v0.1.0 simple data-driven tests with Test::Roo
Thrift-v0.11.0 JKING v0.11.0 Apache Thrift is a software framework for scalable cross-language services development.
Tribology-Lubricant SHERZODR 0.01 Data type that represents a Lubricant class.
WWW-Amazon-checkip JLMARTIN 0.01 Returns your ip address using http://checkip.amazonaws.com/
WWW-Google-KnowledgeGraphSearch MANWAR 0.01 Interface to Google Knowledge Graph Search API.
Wishlist JBERGER 0.01 A multi-user web application for tracking wanted items.
WordList-EN-BIP39 PERLANCAR 0.001 English word list for BIP 39
WordList-ES-BIP39 PERLANCAR 0.001 Spanish word list for BIP 39
WordList-FR-BIP39 PERLANCAR 0.001 French word list for BIP 39
WordList-IT-BIP39 PERLANCAR 0.001 Italian word list for BIP 39
WordList-JA-BIP39 PERLANCAR 0.001 Japanese word list for BIP 39
WordList-KO-BIP39 PERLANCAR 0.001 Korean word list for BIP 39
WordList-ZH-Simplified-BIP39 PERLANCAR 0.001 Chinese word list for BIP 39 (simplified)
WordList-ZH-Traditional-BIP39 PERLANCAR 0.001 Chinese word list for BIP 39 (traditional)
WordLists-ID-Common PERLANCAR 0.001 Lists of common Indonesian words
Yancy PREACTION 0.001 A simple CMS for administrating data
monotifier ABALAMA 1.00 a monitoring tool that provides notifications on different communication channels