List of new CPAN distributions – Mar 2019

dist author version abstract
AWS-Lambda SHOGO 0.0.1 It's Perl support for AWS Lambda Custom Runtime.
Acme-CPANModules-ModernPreambles PERLANCAR 0.001 Modules that offer modern preambles
Acme-CPANModules-Parse-UnixCommands PERLANCAR 0.001 Modules that parse output of Unix commands
Acme-CPANModules-Parse-UnixConfigs PERLANCAR 0.001 Modules that parse Unix config (or related) files
Acme-CXW-vars-i CXW 1.02 Perl pragma to declare and simultaneously initialize global variables.
Acme-Cow ELIZABETH 0.1 Talking barnyard animals (or ASCII art in general)
Acme-KemonoFriends-Color YUKINEA 0.01 Colorfull output.
Acme-Text-Viceversa WORTHMINE 0.06 ÉÂsɹÇÂʌÇÂɔᴉΛ::ʇxÇÂ⊥::ÇÂɯɔ∀
Alt-Data-Frame-ButMore SLOYD 0.0041 Alternative implementation of Data::Frame with more features
Alt-NewRelic-Agent-FFI-Empty PLICEASE 0.02 NewRelic::Agent::FFI interface that doesn't do anything
Alt-Template-Plugin-JSON-Moo JWRIGHT 0.01 Adds a .json vmethod for all TT values.
App-CSV2Chart SHLOMIF 0.0.1 generate charts on the command line.
App-PhotoDB JGAZELEY 0.00 App to manage a collection of film cameras & lenses
App-Prove-Plugin-PassEnv HURRICUP 0.001 a prove plugin to pass environment variables
App-Qmail-DMARC FANY 0.42 verify using DMARC and queue a mail message for delivery
App-SpreadRevolutionaryDate GIBUS 0.02 Spread date and time from Revolutionary (Republican) Calendar on Twitter, Mastodon and Freenode.
App-ValidateBankAccount MANWAR 0.01 App to validate bank account number.
App-ValidateSortCode MANWAR 0.01 App to validate bank sort code.
App-linerange PERLANCAR 0.001 Retrieve line ranges from a filehandle
App-perlutils WOLDRICH 0.024 utils for perl development
App-ppll BIFFEN v0.0.0 Command runner
App-rshasum SHLOMIF 0.0.1 recursive shasum.
App-rsync-retry PERLANCAR 0.001 Rsync wrapper to retry on transfer errrors
App-term-hr WOLDRICH 0.01 define a thematic change in the content of a terminal session
App-ucpan KPEE 1.00 improved CPAN modules updater
App-wget-retry PERLANCAR 0.001 Wget wrapper to retry harder
Arango-DB AMBS 0.001 A simple interface to ArangoDB REST API
Arrays-Same TOBYINK 0.001 Test if two arrays are identical
Avolution-Emoji CHOIBOI v0.1.1
Bencher-Scenario-ComparingArrays PERLANCAR 0.001 Modules that compare arrays
Bencher-Scenario-preloadable PERLANCAR 0.001 Benchmark preloadable.pm
Bio-DB-EMBL CJFIELDS 1.7.3 Database object interface for EMBL entry retrieval
Bio-DB-NCBIHelper CJFIELDS 1.7.3 A collection of routines useful for queries to NCBI databases.
Bio-MUST-Apps-FortyTwo DBAURAIN 0.190820 Main class for forty-two tool
Bio-Sketch LSKATZ 0.1
Bio-Sketch-Mash LSKATZ 0.8
Bundle-Camelcade HURRICUP 0.001 Bundle of modules used by Perl5 plugin for IntelliJ IDEs
Business-Tax-Withholding-JP WORTHMINE 0.01 auto calculation for Japanese tax and withholding
CLI-Driver GRAVATTJ 0.1
CatalystX-Action-Negotiate DORIAN 0.01 ActionRole for content negotiation
Chart-GGPlot SLOYD 0.0000_01 ggplot2 port in Perl
Class-Tiny-ConstrainedAccessor CXW 0.000001 Generate Class::Tiny accessors that apply type constraints
DNS-Unbound FELIPE 0.01 A Perl interface to NLNetLabs’s Unbound recursive DNS resolver
Data-Faker-Country TEAM 0.001 Provides country and ISO country code generation
Devel-vscode BJOERN 0.01 Debug with perl-debug in Visual Studio Code
Device-Firewall-PaloAlto PUGLET 0.1.1 new module
Device-NTCChip-GPIO MQTECH 0.100 Control the GPIO pins on the original NTC Chip
Device-Yeelight JBAIER 0.10 Controller for Yeelight smart devices
Dist-Zilla-PluginBundle-Author-GSG GSG 0.0.3 Grant Street Group CPAN dists
Dotenv BOOK 0.001 Support for dotenv in Perl
ExtUtils-ModuleMaker-Siffra LUIZBENE 0.01 Module abstract (<= 44 characters) goes here
Function-Interface KFLY 0.01 specify type constraints of subroutines
GIS-Distance-GeoEllipsoid BLUEFEET 0.10 Geo::Ellipsoid distance calculations.
Geo-Location NHORNE 0.01 Location information
Geo-Location-Point NHORNE 0.01 Location information
Giblog KIMOTO 0.01 HTML Generator
Graph-Traverse WLINDLEY 0.01 A traverse() method for the Graph module.
HTTP-Simple DBOOK 0.001 Simple procedural interface to HTTP::Tiny
JSON-Feed GUGOD 0.001 Syndication with JSON.
Log-ger-Layout-Pattern-Multiline PERLANCAR 0.001 Pattern layout (with multiline message split)
MIDI-Util GENE 0.0100 MIDI Utilities
Mail-Qmail-DMARC FANY 0.11 verify using DMARC and queue a mail message for delivery
Mash LSKATZ 0.1
Module-Lazy KHEDIN 0.01 postpone loading a module until it's actually used
Mojolicious-Plugin-CascadingConfig SRCHULO 0.01 Perl-ish configuration plugin that loads and merges config files in order
Mojolicious-Plugin-GitConfig BYTERAZOR 1.0 Mojolicious Plugin for using Config::GitLike as the main configuration provider
Mojolicious-Plugin-Gzip SRCHULO 0.01 Plugin to Gzip Mojolicious responses
Mojolicious-Plugin-NoServerHeader SRCHULO 0.01 Removes the Server header from every Mojolicious response
Mojolicious-Plugin-TextExceptions MRAMBERG 0.01 Render exceptions as text in command line user agents
Mojolicious-Plugin-Web-Auth-Site-DropboxV2 OALDERS 0.000001 Dropbox OAuth2 Plugin for Mojolicious::Plugin::Web::Auth
Mojolicious-Plugin-Wordpress JHTHORSEN 0.01 Use WordPress as a headless CMS
MooX-Attribute-ENV ETJ 0.01 Allow Moo attributes to get their values from %ENV
MooX-StrictHas ETJ 0.01 Allow Moo attributes to get their values from %ENV
Perl-Critic-Policy-Catalyst-ProhibitUnreachableCode BLUEFEET 0.01 Don't write code after an unconditional Catalyst detach.
Perl-Metrics-Halstead GENE 0.0100 Compute Halstead complexity metrics
Proc-Stat MIKER 0.01
Protocol-Database-PostgreSQL TEAM 1.000 PostgreSQL wire protocol implementation
Protocol-Redis-Faster DBOOK 0.001 Optimized pure-perl Redis protocol parser/encoder
RogersMine GFR 0.1.0 Query or change configuration of Perl modules
SMS-Net-Send KIANMENG 0.01 SMS::Send driver to send messages via Mocean, https://moceanapi.com/.
SMS-Send-Mocean KIANMENG 0.02 SMS::Send driver to send messages via Mocean, https://moceanapi.com/.
SQL-Simple PETDANCE 0.01 A very simple SQL-building library
SQL-Tiny PETDANCE 0.01 A very simple SQL-building library
Sah-Schemas-FileHandle PERLANCAR 0.001 Sah schemas for flilehandle
Siffra-Base LUIZBENE 0.01 Siffra Base Module
Siffra-Logger LUIZBENE 0.01 Siffra config for Log::Any
Siffra-Transfers LUIZBENE 0.01 File transfers module
Signal-Pipe LEONT 0.001 Self pipes for signal handling
Slack-WebHook ATOOMIC 0.001 Slack WebHook with preset layout & colors for sending slack notifications
TAP-Formatter-Camelcade HURRICUP 0.001 Converts test events from TAP::Harness to the TeamCity format
TMO MEMOWE 0.02 A role to extend Test::Mojo to make mojo command output tests easy.
Test-AutoMock HIRATARA 0.01 A mock that can be used with a minimum setup
Test-Mojo-CommandOutputRole MEMOWE 0.02 A role to extend Test::Mojo to make mojo command output tests easy.
Test-Starch BLUEFEET 0.12 Test core features of starch.
Tk-JThumbnail TURNERJW 2.0 Present a list of files in a directory as a grid of icons with or without text.
WWW-FCM-HTTP-V1 OMOHAYUI 0.01 Client for Firebase Cloud Messaging HTTP v1 API
WWW-Speakerdeck-Download RENEEB 0.01 Download a deck from speakerdeck.com
WebService-Pixela ANATOFUZ 0.01 It's https://pixe.la API client for Perl.
WebService-ValidSign WATERKIP 0.001 A REST API client for ValidSign
mojo-calendar CRLCU v0.0.1 Extended DateTime manipulator
preloadable PERLANCAR 0.001 Require a module during run-time (or compile-time)
rogers-mine GFR 0.1.0 Query or change configuration of Perl modules
winja KPEE 1.0.1 dirty patch for handling pathname on MSWin32::Ja_JP.cp932
Advertisements

List of new CPAN distributions – Feb 2019

dist author version abstract
Acme-Backwards LNATION 0.01 One line fi, esle, fisle, sselnu
Acme-CPANModules-ConvertingFromRegex PERLANCAR 0.001 Convert a regular expression to various stuffs
Acme-CPANModules-ConvertingToRegex PERLANCAR 0.001 Convert various stuffs to regular expression
Acme-CPANModulesUtil-Bencher PERLANCAR 0.001 Generate/extract Bencher scenario from information in an Acme::CPANModules::* list
Acme-DependOnEverything WOLDRICH 0.02 depend on everything
Alien-SNMP OLIVER 2.000000 Build and install Net-SNMP
Alien-libtickit PEVANS 0.01 Alien wrapping for libtickit
Alien-unzip PLICEASE 0.01 Find or build Info-ZIP unzip
Alt-FFI-Raw-Platypus PLICEASE 0.02 Alternate FFI::Raw implementation powered by FFI::Platypus
AnyEvent-XSPromises TVDW 0.001 Another Promises library, this time implemented in XS for performance
App-AVR-Fuses PEVANS 0.01 a commandline fuse value calculator for AVR microcontrollers
App-CalendarDatesUtils PERLANCAR 0.001 Utilities related to Calendar::Dates
App-DTWMIC ILUX 0.001 disable touchpad when a mouse is connected
App-calx PERLANCAR 0.001 Display a calendar
App-hopen CXW 0.000009 hopen build system command-line interface
App-id3shit WOLDRICH 2.54 less sucky cli id3 tag editor
App-inplace PERLANCAR 0.001 Replace a file with command output
App-mycnfdiff PAVELSR 1.00 compare MySQL server configs.
App-rmcd WOLDRICH 0.278 remotely control a daemonized mplayer process
App-rmshit WOLDRICH v0.6.4 Keep a directory structure clean at all times
App-termpub MDOM 1.00 read epubs in the terminal
App-whichdll PLICEASE 0.02 Find dynamic libraries
Banal-Dist-Util TABULO 0.004 General purpose utility collection mainly used by <Dist::Zilla::*::Author::TABULO>
Banal-Mini-Utils TABULO 0.002 Provide several MUNGER functions that may be use in conjunction with MooseX::MungeHas.
Banal-Moosy-Mungers TABULO 0.001 Provide several MUNGER functions that may be use in conjunction with MooseX::MungeHas.
Banal-Role-Fallback TABULO 0.001 A Moo/Moose compatible incarnation of Banal::Role::Fallback::Tiny
Banal-Util-Mini TABULO 0.001 Provide several utility functions with minimal dependencies.
Bencher-Scenarios-DateTimeOfDay PERLANCAR 0.001 Scenarios to benchmark Date::TimeOfDay
Bencher-Scenarios-LoggingModules PERLANCAR 0.001 Benchmark logging modules
Bio-DB-BioFetch CDIESH 1.7.3 Database object interface to BioFetch retrieval
Bio-DB-GFF CDIESH 1.7.3 Storage and retrieval of sequence annotation data
Bio-DB-SeqFeature CDIESH 1.7.3 Normalized feature for use with Bio::DB::SeqFeature::Store
C-Mlock SORBS 1.11 A locked in RAM memory region
CPP-catch SYBER v1.0.2 Catch test library http://catch-lib.net
CPP-geos SYBER v3.7.0 geos C++ library (alien, without perl-adapters).
Cache-SimpleDir MPOURASG 2.0.5 Cache, time consuming subroutines or paid api calls
Calendar-Dates PERLANCAR 0.1.0 Modules that contain calendar dates
Calendar-Dates-Academic-ID-UT-PPs PERLANCAR 0.001 Academic calendar of Universitas Terbuka (postgraduate programs, program pascasarjana)
Calendar-Dates-CFA PERLANCAR 0.001 CFA exam calendar
Calendar-Dates-FRM PERLANCAR 0.001 FRM exam calendar
Calendar-Dates-ID-Holiday PERLANCAR 0.001 Indonesian holiday calendar
Calendar-DatesRoles-DataPreparer-CalendarVar-FromData PERLANCAR 0.001 Populate $CALENDAR from data in __DATA__
Calendar-DatesRoles-DataUser-CalendarVar PERLANCAR 0.001 Provide Calendar::Dates interface from consumer's $CALENDAR
Calendar-DatesRoles-FromData PERLANCAR 0.001 Provide Calendar::Dates interface to consumer which has @ENTRIES
Calendar-DatesRoles-FromEntriesVar PERLANCAR 0.002 Provide Calendar::Dates interface to consumer which has @ENTRIES
Catalyst-Action-Serialize-SimpleXLSX MBAAS 0.002 Serialize to Microsoft Excel 2007 .xlsx files
Cfn JLMARTIN 0.01 An object model for CloudFormation documents
Chess-Opening GUIDO 0.1 Read chess opening books in polyglot format
Class-Tiny-Immutable DBOOK 0.001 Minimalist class construction, with read-only attributes
Convert-Base81 JGAMBLE 1.00 Encoding to and decoding from Base 81 strings
Convert-Base85 JGAMBLE 1.00 Encoding to and decoding from Base 85 strings
Crypt-LibSCEP MRSCOTTY 0.04 Perl extension for blah blah blah
DTA-CAB MOOCOW 1.106 "Cascaded Analysis Broker" for robust linguistic analysis
Data-Hopen CXW 0.000009 A build generator with first-class edges and explicit dependencies
Data-MethodProxy BLUEFEET 0.03 Inject dynamic data into static data.
Data-SSHPubkey JMATES 0.01 utility function to parse SSH public keys with
DataStruct-Flat JLMARTIN 0.01 Convert a data structure into a one level list of keys and values
Date-Names-Perl6 TBROWDER v1.0.0
Dist-Zilla-Plugin-Calendar-Dates PERLANCAR 0.054 Plugin to use when building Calendar::Dates::* distribution
Dist-Zilla-Plugin-Prereqs-SetMinimumVersion-FromPmVersions PERLANCAR 0.001 Set minimum version of prereqs from pmversions.ini
Eval-Quosure SLOYD 0.0000_01 Evaluate within a caller environment
FFI-Platypus-Legacy-Raw PLICEASE 0.02 Perl bindings to the portable FFI library (libffi)
FP PFLANZE 0.71 functional programming on Perl
File-Find-Rule-UnixPermissions VVELOX v0.0.0 Use unix permissions for searching for files with File::Find.
Foreign-Sort MOB 0.01 subroutine attribute to allow call to sort routine from other package
Geo-Coder-DataScienceToolkit NHORNE 0.01 Provides a geocoding functionality using http://www.datasciencetoolkit.org/
GermaNet-Flat MOOCOW 0.03 Flat relational access to GermaNet data
Imager-File-HEIF TONYC 0.001 HEIF image file support for Imager
Imager-Filter-Binarization GUGOD 0.001 A collection of image binarization algorthims as image filter.
Lingua-TT MOOCOW 0.11 TnT-style I/O utilities
Log-Mini DFE 0.0.1 It's a very simple logger which can log your messages to a file or STDERR.
Log-MixedColor MQTECH 1.000 Outputs messages in multiple colors
Logic-Minimizer JGAMBLE 1.00 Parent class for Logic minimizers like Quine-McCluskey
Logic-TruthTable JGAMBLE 1.00 Create a Boolean Truth Table
Math-MatrixLUP TRIZEN 0.01 Matrix operations and LUP decomposition.
Module-Build-Using-PkgConfig PEVANS 0.01 extend Module::Build to more easily use platform libraries provided by pkg-config
Module-CoreList-List PERLANCAR 0.001 List of core modules by perl version
MooX-Purple LNATION 0.01 purple
Music-FretboardDiagram GENE 0.0100 Draw fretboard chord diagrams
Music-GuitarChordDiagram GENE 0.0100 Draw Guitar Chord Diagrams
MySQL-Compress CMANLEY 1.01 This module provides MySQL COMPRESS() and UNCOMPRESS() compatible Perl functions
MySQL-ORM GRAVATTJ 0.02
Net-AS2-PSGI AJM 0.9 AS2 Protocol Plack application
Net-SharePoint-Basic ROMM 0.1 Basic interface to Microsoft SharePoint REST API
PERLANCAR-YAML-Any PERLANCAR 0.001 Pick a YAML implementation and use it
Parse-CommandLine-Regexp PERLANCAR 0.001 Parsing string like command line
Parse-IPCommand PERLANCAR 0.001 List network interfaces from "ip addr show" output
Parse-Netstat-Colorizer VVELOX v0.0.0 a netstat like utility that supports color and searching
Parse-Netstat-Search VVELOX v0.0.0 Searches the connection list in the results returned by Parse::Netstat
Parse-Netstat-Search-Sort VVELOX v0.0.0 Sorts the returned array from Parse::Netstat::Search.
PerlX-Let RRWO v0.0.1 Syntactic sugar for lexical constants
Plack-Middleware-Matomo VPEIL 0.01 a middleware to track usage information with Matomo
Pod-Weaver-Plugin-Calendar-Dates PERLANCAR 0.001 Plugin to use when building Calendar::Dates::* distribution
Promise-ES6 FELIPE 0.01 ES6-style promises in Perl
RT-Extension-ElapsedBusinessTime PUCK 0.01 RT-Extension-ElapsedBusinessTime Extension
RightScale-Query MQTECH 0.200 Query RightScale for server instances
Role-Cache-LRU KIANMENG 0.01 Add LRU caching to any Moo classes.
Shorthand PERLANCAR 0.001 Shorthand
Shorthand-Perinci-CmdLine-Any-main-app PERLANCAR 0.001 Load Perinci::CmdLine::Any and run main's app
Siffra-Bootstrap LUIZBENE 0.01 Module abstract (<= 44 characters) goes here
Siffra-Tools LUIZBENE 0.01 Siffra Tools
Spreadsheet-Read-Ingester STEVIED 0.001 ingest spreadsheets to Perl data structure for faster, repeated processing
String-ShortHostname MQTECH 0.006 extracts the first field from an FQDN
Sys-Sendfile-OSX LTRIANT 0.01 Exposing sendfile() for OS X
Task-Tmp-spanel PERLANCAR 0.001 Perl modules for Spanel
Template-LiquidX-Tidy ANEI 0.01 Indentation for Liquid template documents
Term-Table2 JSF v1.0.0 Provides formatted output of tables supplied as a combination of header and rows. Among other things supports both horizontal and vertical splitting (paging), in other words can cope with tables wider and / or higher than the size of page you intend to use.
Test-Catch SYBER v1.0.0 Run C++ catch tests from perl test file
Test-TCM-Role-API CHESNOKOV 0.01 Role to test PSGI-based JSON API using Test::Class::Moose.
Test-TempFile RJH 0.90 Helper library for testing code that uses temp files
Test2-Tools-FFI PLICEASE 0.04 Tools for testing FFI
Text-JSCalendar BRONG 0.01 autogenerated timezone data for ME::CalDAVTalk
Types-Mojo RENEEB 0.01 Types related to Mojo
Unix-Sudo DCANTRELL 1 run a block as root
VideoLAN-LibVLC NERDVANA 0.01 Decode audio/video files using LibVLC
Weasel-Driver-Mock EHUELS 0.01 Weasel driver to mock a real driver for testing purposes
WebService-GeoIPify KIANMENG 0.01 Perl library for ipify's Geolocation API, https://geo.ipify.org.
WebService-IPAPI KIANMENG 0.01 Perl library for using IPAPI, https://ipapi.com.
WebService-IPStack KIANMENG 0.01 Perl library for using IPStack, https://ipstack.com.
WebService-TaxJar COLINK 0.0001 A simple client to TaxJar's REST API.
X11-PngViewer DDICK 0.09 Png Viewer in X11
XS-Install SYBER v1.0.0 ExtUtils::MakeMaker based module installer for XS modules.
YottaDB OESI 0.24 Perl extension for accessing YottaDB
dta-tokwrap MOOCOW 0.86-pre1 Wrapper modules & scripts for DTA XML corpus tokenization
magic CHOHAG 1
next-XS SYBER v0.1.3 Replacement for next::method, performing very fast, and super::method (next-by-mro), with Perl and C++ interface.

List of new CPAN distributions – Jan 2019

dist author version abstract
AES128 JEFFZHANG 0.01 AES128 CTR mode encryption algorithms
Acme-AtIncPolice YTURTLE 0.01 The police that opponents to @INC contamination
Acme-CM-Get PERLANCAR 0.001 Shortcut to retrieve Acme::CPANModules list
Acme-CPANModules-API-Domain-Registrar PERLANCAR 0.001 API to domain registrars
Acme-CPANModules-AliasingModuleName PERLANCAR 0.001 Aliasing a (long) module name to another (shorter) name
Acme-CPANModules-ArrayClassBuilder PERLANCAR 0.001 Class builders for array-backed classes
Acme-CPANModules-Assert PERLANCAR 0.001 Assertion
Acme-CPANModules-CLIWithUndo PERLANCAR 0.001 CLI utilities with undo feature
Acme-CPANModules-CheckingModuleInstalledLoadable PERLANCAR 0.001 Checking if a module is installed or loadable
Acme-CPANModules-CustomCPAN PERLANCAR 0.001 Creating your own CPAN-like repository
Acme-CPANModules-GettingTempDir PERLANCAR 0.001 Getting system-wide temporary directory in a portable way
Acme-CPANModules-HidingModules PERLANCAR 0.001 Simulate the unavailability of modules
Acme-CPANModules-LocalCPANIndex PERLANCAR 0.001 Creating an index against local CPAN mirror
Acme-CPANModules-LocalCPANMirror PERLANCAR 0.001 Creating a local CPAN mirror
Acme-CPANModules-MagicVariableTechnique PERLANCAR 0.001 Modules which employ magic variable technique to do stuffs
Acme-CPANModules-MooseStyleClassBuilder PERLANCAR 0.001 Moose-style (Perl 6-style) class builders
Acme-CPANModules-NonMooseStyleClassBuilder PERLANCAR 0.001 Non-Moose-style class builders
Acme-CPANModules-OneLetter PERLANCAR 0.001 One-letter CPAN modules
Acme-CPANModules-Org PERLANCAR 0.001 Modules related to Org format
Acme-CPANModules-PickingRandomLinesFromFile PERLANCAR 0.001 Picking random lines from a file
Acme-CPANModules-StructuredDATA PERLANCAR 0.001 Modules that give some structure to DATA
Acme-CPANModules-TextTable PERLANCAR 0.001 Modules that generate text tables
Acme-CPANModules-Unbless PERLANCAR 0.001 Unblessing a reference
Acme-CPANModules-UpsideDownTextWithUnicode PERLANCAR 0.001 Modules that can flip Latin text (make your text look upside down) using Unicode characters
Acme-CPANModules-WorkingWithTree PERLANCAR 0.001 Working with tree data structure in Perl
Acme-CPANModules-XSVersions PERLANCAR 0.001 XS versions of Perl modules
Acme-CPANModulesUtil-FeatureMatrix PERLANCAR 0.001 Draw features matrix of modules in an Acme::CPANModules::* list
Acme-PERLANCAR-DumpImportArgs PERLANCAR 0.001 Dump import arguments
Acme-PERLANCAR-Test-MetaCPAN-HTML PERLANCAR 0.001 Test HTML rendering on MetaCPAN
Alien-hiredis DBOOK 0.001 Alien wrapper for hiredis
App-BinPackUtils PERLANCAR 0.001 Collection of CLI utilities related to packing items into bins
App-CPANCoverBadge RENEEB 0.01 Get badge for cpancover
App-Dothe YANICK 0.0.1 YAML-based task runner
App-GetoptLongExamples PERLANCAR 0.001 Collection of CLI examples related to Getopt::Long
App-ImageInfoUtils PERLANCAR 0.001 Get information about image files
App-IncrementUtils PERLANCAR 0.001 Utilities related to increment/autoincrement
App-NumberUtilRangeUtils PERLANCAR 0.001 CLIs for Number::Util::Range
App-Perlambda MOZNION 0.01 A CLI tool for managing Lambda functions with Lambda Perl layer.
App-RenameUtils PERLANCAR 0.001 Utilities related to renaming files
App-Spanel-TailWeblog PERLANCAR 0.001 Tail -f spanel HTTP and/or HTTPS access log
App-StringUtilRangeUtils PERLANCAR 0.001 CLIs for String::Util::Range
App-clipbored WOLDRICH v1.2.6 Daemon that continuously collects all selections in Xorg's clipboard buffers
App-html2text PERLANCAR 0.001 Render HTML as text using one of multiple backends
App-iperlmoddir PAVELSR 1.0 quick print info about modules in directory at CSV file
App-lcpan-Bootstrap PERLANCAR 20190107.0.0 Bootstrap database for lcpan
App-lsplusplus WOLDRICH 0.38 ls on steroids
App-pimpd WOLDRICH 0.312 Perl Interface for the Music Player Daemon 2
App-rel WOLDRICH 2.24 pretty-print flexget downloads
App-rgbterm WOLDRICH 0.022 show rgb values of defined terminal colors
App-tmclean SONGMU v0.0.1 backend class of tmclean
Bencher-Scenarios-ManipulatingSymbolTable PERLANCAR 0.001 Benchmark symbol table manipulation actions
Broadworks-OCIP NIGELM 0.08 API for communication with Broadworks OCI-P Interface
Build-Hopen CXW 0.000002 A build generator with first-class edges and explicit dependencies
Class-Data-Lite SONGMU 0.0010 a minimalistic class accessors
Code-TidyAll-Plugin-ClangFormat SHLOMIF 0.0.1 run clang-format using Code::TidyAll
Code-TidyAll-Plugin-TestCount SHLOMIF 0.0.1 ascertain that the test plan agrees with the Test::Count annotations
Complete-Spanel PERLANCAR 0.001 Completion routines related to Spanel
Data-Decrement PERLANCAR 0.001 Provide extra magic for auto-decrement
Data-TableReader-Decoder-HTML NERDVANA 0.009 HTML support for Data::TableReader
Date-Cutoff-JP WORTHMINE 0.01 Get the day cutoff and payday for in Japanese timezone
DateTime-Format-Text NHORNE 0.01 Find a Date in Text
Devel-CallTrace-PP PAVELSR 0.01 Main module of dctpp
Devel-MojoProf JHTHORSEN 0.01 Profile blocking, non-blocking a promise based Mojolicious APIs
Devel-Probe GONZUS 0.000003 Quick & dirty code probes for Perl
Devel-TRay PAVELSR 0.1 See what your code's doing
Dir-Manifest SHLOMIF 0.0.1 treat a directory and a manifest file as a hash/dictionary of keys to texts or blobs
Dist-Zilla-PluginBundle-Author-TEAM TEAM 0.001 Defines common dist.ini config for distributions by TEAM
Enterprise-Licence LNATION 0.01 The great new Enterprise::Licence!
HTML-FormatText-Any PERLANCAR 0.001 Render HTML as text using one of multiple backends
KubeBuilder JLMARTIN 0.02 Module to help build the Perl Kubernetes client
Kubernetes-REST JLMARTIN 0.01 A Perl REST Client for the Kubernetes API
LCFG-Utils-Perl SJQUINNEY v1.13.4 Perl API for LCFG utilities
Locked-Storage SORBS 1.00 A locked in RAM memory region
Mac-OSA-Dialog-Tiny LNATION 0.01 The great new Mac::OSA::Dialog::Tiny!
MicroECC JEFFZHANG 0.01 Perl extension for the micro-ecc library
Module-List-Patch-Hide PERLANCAR 0.001 Hide some modules from Module::List
Mojolicious-Plugin-Minion-Workers MCHE 0.0907 does extend base Mojolicious::Plugin::Minion on manage Minion workers.
Mus SRCHULO 0.01 Mu but with slightly more typing and strict constructors
Music-KNRadio-NowPlaying WOLDRICH 0.002 Now playing metadata for Karlstad Rock 92.2
Number-Util-Range PERLANCAR 0.001 Find sequences in number arrays & convert to range (e.g. 100,2,3,4,5,101 -> 100,"2..5",101)
PERLANCAR-Module-List-Patch-Hide PERLANCAR 0.001 Hide some modules from PERLANCAR::Module::List
PMLTQ-CGI MATY 0.0.1 [DEPRECATED] This is html fronted for SQLEvaluator and is currently being replaced by PMLTQ::Server
PMLTQ-Commands MATY 0.0.1 PMLTQ command line interface
PMLTQ-PML2BASE MATY 3.0.1 Convert from PML to SQL
Package-Util-Lite PERLANCAR 0.001 Package-related utilities
Perinci-Sub-XCompletionBundle-DBI PERLANCAR 0.001 Completion routines related to DBI
Perinci-Sub-XCompletionBundle-lcpan PERLANCAR 0.001 Completion stuffs using local CPAN database
Quiq FSEITZ 1.129 Class library
Regexp-Pattern-Net PERLANCAR 0.001 Regexp patterns related to network
Sah-Schemas-DBI PERLANCAR 0.001 Schemas related to DBI
Sah-Schemas-DataSizeSpeed PERLANCAR 0.001 Sah schemas related to data sizes & speeds (filesize, transfer speed, etc)
Short-URL SRCHULO 0.014 Encodes and Decodes short urls by using Bijection
String-Util-Range PERLANCAR 0.001 Find sequences in arrays & convert to range (e.g. "a","b","c","d","x",1,2,3,4,"x" -> "a..d","x","1..4","x")
Swagger-Schema-Kubernetes JLMARTIN 0.01 Object model to Kubernetes Swagger / OpenAPI schema files
Sys-RunAlone-Flexible PERLANCAR 0.001 make sure only one invocation of a script is active at a time
Teng-Plugin-TmpSuppressRowObjects EGAWATA 0.01 add methods with temporary use of suppress_row_objects
Term-ExtendedColor-Dzen WOLDRICH 0.001 Color input and add dzen compatible attributes
Term-ExtendedColor-Xresources-Colorscheme WOLDRICH 0.010 Colorschemes for the terminal
Test-Mojo-Role-StopOnFail FVOX 0.01 Stop Mojolicious tests after first failure.
Test-NaiveStubs GENE 0.0100 Generate test stubs for methods
Types-RENEEB RENEEB 0.01 Several predefined Type::Tiny types
URI-ws_Punix AKALINUX 0.001 URI for ws+unix
WWW-CPAN-SQLite STRO 1.001 generate and provide precompiled CPAN::SQLite database
WWW-Google-Cloud-Auth-ServiceAccount LARION 1.000002 Service account based OAuth authentication for Google Cloud APIs
WebService-Auth0 JJNAPIORK 0.001 A Perl SDK for Auth0
WebService-DailyConnect PLICEASE 0.02 Web client to download events from Daily Connect
Win32-Backup-Robocopy LORENZO 7 a simple backup solution using robocopy
lcfg-build-pkgspec SJQUINNEY v0.2.5 Object-oriented interface to LCFG build metadata
lib-rabs RANDIR 0.01 lib that makes relative path absolute to caller, backwards.
voiceIt2 HASSANIS 3.12 Perl extension for blah blah blah
xprop2i3 ECARROLL 0.01 Easy display of i3 attributes

lcpan tips 022: Testing all dependents

About this series: A collection of short blog posts about lcpan tips/recipes. Some posts will also end up in the upcoming App::lcpan::Manual::Cookbook POD to be included in the App::lcpan distribution. First article is here. See the whole series.

About lcpan: an application to download and index a mini CPAN mirror on your local filesystem, so in effect you will have something like your own CPAN with a command-line tool (or perl API) to query and extract information from your mirror.

When you release a new version of a module, CPAN Testers will test your module on a variety of platforms. Sometimes, when they happen to test other modules that depend on your module, they will also uncover problems that is caused by your new version breaking your dependents. However, this is not done systematically or completely. If you want to make sure your changes do not break your dependents, you can test for yourself.

Suppose I’m making some changes to Regexp::Pattern. Let’s see who depends on this module:

% lcpan rdeps Regexp::Pattern -R --phase runtime --rel requires
+----------------------------------+-----------+--------------+-------------+
| dist                             | author    | dist_version | req_version |
+----------------------------------+-----------+--------------+-------------+
| App-Licensecheck                 | JONASS    | v3.0.36      | 0           |
| App-RegexpPatternUtils           | PERLANCAR | 0.003        | 0           |
| Bencher-Scenarios-RegexpPattern  | PERLANCAR | 0.003        | 0           |
| Regexp-Common-RegexpPattern      | PERLANCAR | 0.001        | 0           |
|   Bencher-Scenarios-RegexpCommon | PERLANCAR | 0.02         | 0           |
| Test-Regexp-Pattern              | PERLANCAR | 0.004        | v0.2.7      |
+----------------------------------+-----------+--------------+-------------+

Force reinstalling all dependents

One way to run tests for all dependents is by force-(re)installing all those distributions. One way to do that:

% for mod in `lcpan rdeps Regexp::Pattern -R | td select dist | perl -pe's/^\s+//' | dist2mod`; do
    echo "Installing $mod ..."
    lcpanm --force $mod
  done

dist2mod is provided by App::DistUtils.

Extracting tarballs

Another way to test all dependents is to extract them to a temporary directory then run prove on each. lcpan provides the handy subcommand extract-dist to do this. But you might want to install the dependents all first to pull their dependencies.

% mkdir test-deps
% cd test-deps
% for dist in `lcpan rdeps Regexp::Pattern -R | td select dist`; do
    mkdir $dist && cd $dist && lcpan extract-dist $dist && cd ..
done

We can now test each dependent distro one by one, or all in one go:

% for dist in *; do
    echo "Testing $dist ..."
    cd $dist/*; prove -lr; cd ../..
done

lcpan tips 021: Install CPAN distribution when you only know a script’s name (2)

About this series: A collection of short blog posts about lcpan tips/recipes. Some posts will also end up in the upcoming App::lcpan::Manual::Cookbook POD to be included in the App::lcpan distribution. First article is here. See the whole series.

About lcpan: an application to download and index a mini CPAN mirror on your local filesystem, so in effect you will have something like your own CPAN with a command-line tool (or perl API) to query and extract information from your mirror. I find it perfect for my own personal use when working offline.

A previous tip shares this recipe to install a CPAN distribution by mentioning its script name:

% cpanm -n `lcpan script2mod pm-uninstall`

Since then, two convenient utilities have been added: cpanm-script and lcpanm-script. The first one is a thin wrapper over cpanm, while the second one is a thin wrapper over lcpanm (which is itself a thin wrapper over cpanm). They basically work the same as the above recipe: given a script name, look up the distribution name the script is included in then convert it to module name, and then pass it to cpanm.

Being simple thin wrappers, {,l}cpanm-script do not add command-line options of their own but simply convert the script name to module name and pass the rest of the options. For example, when a script with the same name exists in multiple distributions (e.g. hangman) only the first one is chosen to be installed. If you want to install all of them, you can use:

% cpanm -n `lcpan script2mod pm-uninstall`

However, these scripts offer another convenience: tab completion.

% lcpanm-script -
% lcpanm-script hang

It’s better to enter a few characters first to prevent the completion routine from trying to retrieve the whole list of scripts on CPAN.

lcpan tips 020: Finding circular dependency

About this series: A collection of short blog posts about lcpan tips/recipes. Some posts will also end up in the upcoming App::lcpan::Manual::Cookbook POD to be included in the App::lcpan distribution. First article is here. See the whole series.

About lcpan: an application to download and index a mini CPAN mirror on your local filesystem, so in effect you will have something like your own CPAN with a command-line tool (or perl API) to query and extract information from your mirror. I find it perfect for my own personal use when working offline.

Before writing Dist::Zilla::Plugin::Prereqs::CheckCircular, from time to time I would end up with circular dependencies in my distributions. For example, I have module A, then write B which depends on A, then write C which depends on B. Later after some hacking I would add C as a dependency to A. Boom, circularity. Installing A becomes impossible because to install A it needs C, which needs B, which needs A… This is usually reported to me by the relentless SREZIC via https://rt.cpan.org, but after a few times I thought it might be a good idea to prevent this from happening in the first place.

The CheckCircular plugin utilizes lcpan to accomplish its goal. First, it gathers the list of modules in the current distribution. Let's say we're building distribution A which contains just a single module A.

Then, the plugin gathers the list of distribution RuntimeRequires prereqs (let's say C D E), then feeds it to lcpan mods --or -x:

% lcpan mods --or -x C D E

This basically filters out modules that do not exist on CPAN because the above commands finds any (--or) module with names exactly matching (-x) the given names. Suppose E is unindexed on CPAN, then the above command will simply output:

C
D

The output of the above command is then fed to lcpan deps -R, which will list all dependencies recursively. Let's say D depends on F and nothing else, while C as we know depends on B, which depends on A. The output of the above command will be:

F
B
  A

The plugin now checks whether in the above list of dependencies, there is any of the current distributions' modules among them. In this case, there is (A). Thus, there is circular dependency and the build is aborted by the plugin.

lcpan tips 019: Helping people find related modules more easily

About this series: A collection of short blog posts about lcpan tips/recipes. Some posts will also end up in the upcoming App::lcpan::Manual::Cookbook POD to be included in the App::lcpan distribution. First article is here. See the whole series.

About lcpan: an application to download and index a mini CPAN mirror on your local filesystem, so in effect you will have something like your own CPAN with a command-line tool (or perl API) to query and extract information from your mirror. I find it perfect for my own personal use when working offline.

In a previous tip, about 3 years ago, the output of lcpan related-mods Carp::Always was:

+---------------------------------+-------------------------------------------------------------------+--------------+-----------------------+-----------------------+--------+-----------+
| module                          | abstract                                                          | num_mentions | num_mentions_together | pct_mentions_together | score  | author    |
+---------------------------------+-------------------------------------------------------------------+--------------+-----------------------+-----------------------+--------+-----------+
| Carp::Always::Color             | Carp::Always, but with color                                      | 9            | 4                     | 44.44                 | 711.04 | DOY       |
| Regexp::Debugger                | Visually debug regexes in-place                                   | 7            | 3                     | 42.86                 | 385.74 | DCONWAY   |
| V                               | Print version of the specified module(s).                         | 9            | 3                     | 33.33                 | 299.97 | ABELTJE   |
| App::cpanoutdated               | detect outdated CPAN modules in your environment.                 | 24           | 4                     | 16.67                 | 266.72 | TOKUHIROM |
| Carp::Source::Always            | Warns and dies with stack backtraces and source code context      | 3            | 2                     | 66.67                 | 266.68 | MARCEL    |
| Devel::bt                       | Automatic gdb backtraces on errors                                | 3            | 2                     | 66.67                 | 266.68 | FLORA     |
| Module::Install::AuthorRequires | declare author-only dependencies                                  | 3            | 2                     | 66.67                 | 266.68 | FLORA     |
| MooseX::Types::LoadableClass    | ClassName type constraint with coercion to load the class.        | 12           | 3                     | 25                    | 225    | ETHER     |
| List::AllUtils                  | Combines List::Util and List::MoreUtils in one bite-sized package | 30           | 4                     | 13.33                 | 213.28 | DROLSKY   |
| App::Software::License          | Command-line interface to Software::License                       | 4            | 2                     | 50                    | 200    | ETHER     |
+---------------------------------+-------------------------------------------------------------------+--------------+-----------------------+-----------------------+--------+-----------+

and here's the output of lcpan related-mods Carp::Always --with-scores, today:

+-----------------------------------+----------------------------------------------------------------------------------+--------------+-----------------------+-----------------------+---------+--------------------------------+----------+
| module                            | abstract                                                                         | num_mentions | num_mentions_together | pct_mentions_together | score   | dist                           | author   |
+-----------------------------------+----------------------------------------------------------------------------------+--------------+-----------------------+-----------------------+---------+--------------------------------+----------+
| Carp::Always::Color               | Carp::Always, but with color                                                     | 14           | 10                    | 71.43                 | 7143    | Carp-Always-Color              | DOY      |
| Devel::Confess                    | Include stack traces on all warnings and errors                                  | 12           | 5                     | 41.67                 | 1041.75 | Devel-Confess                  | HAARG    |
| App::cpanoutdated                 | detect outdated CPAN modules in your environment.                                | 24           | 5                     | 20.83                 | 520.75  | cpan-outdated                  | DOLMEN   |
| Devel::bt                         | Automatic gdb backtraces on errors                                               | 2            | 2                     | 100                   | 400     | Devel-bt                       | FLORA    |
| Regexp::Debugger                  | Visually debug regexes in-place                                                  | 9            | 3                     | 33.33                 | 299.97  | Regexp-Debugger                | DCONWAY  |
| V                                 | Print version of the specified module(s).                                        | 9            | 3                     | 33.33                 | 299.97  | V                              | ABELTJE  |
| App::YTDL                         | Download YouTube and other videos.                                               | 3            | 2                     | 66.67                 | 266.68  | App-YTDL                       | KUERBIS  |
| Carp::Source::Always              | Warns and dies with stack backtraces and source code context                     | 3            | 2                     | 66.67                 | 266.68  | Carp-Source                    | MARCEL   |
| Module::Install::AuthorRequires   | declare author-only dependencies                                                 | 3            | 2                     | 66.67                 | 266.68  | Module-Install-AuthorRequires  | FLORA    |
| List::AllUtils                    | Combines List::Util, List::SomeUtils and List::UtilsBy in one bite-sized package | 47           | 5                     | 10.64                 | 266     | List-AllUtils                  | DROLSKY  |
| CPAN::Mini                        | create a minimal mirror of CPAN                                                  | 84           | 6                     | 7.14                  | 257.04  | CPAN-Mini                      | RJBS     |
| MooseX::Types::LoadableClass      | ClassName type constraint with coercion to load the class.                       | 12           | 3                     | 25                    | 225     | MooseX-Types-LoadableClass     | ETHER    |
| App::Nopaste                      | Easy access to any pastebin                                                      | 31           | 4                     | 12.9                  | 206.4   | App-Nopaste                    | ETHER    |
| Clone::Any                        | Select an available recursive-copy function                                      | 4            | 2                     | 50                    | 200     | Clone-Any                      | EVO      |
| Test::Taint                       | Tools to test taintedness                                                        | 4            | 2                     | 50                    | 200     | Test-Taint                     | PETDANCE |
| WWW::YouTube::Download            | Very simple YouTube video download interface                                     | 4            | 2                     | 50                    | 200     | WWW-YouTube-Download           | OALDERS  |
| App::Software::License            | Command-line interface to Software::License                                      | 5            | 2                     | 40                    | 160     | App-Software-License           | ETHER    |
| CPAN::Mini::Devel                 | Create CPAN::Mini mirror with developer releases                                 | 5            | 2                     | 40                    | 160     | CPAN-Mini-Devel                | DAGOLDEN |
| Finance::Currency::Convert::Yahoo | convert currencies using Yahoo                                                   | 5            | 2                     | 40                    | 160     | Finance-Currency-Convert-Yahoo | LGODDARD |
| L                                 | Back end packages (hardware drivers) for Lab::Measurement                        | 5            | 2                     | 40                    | 160     | L                              | SONGMU   |
+-----------------------------------+----------------------------------------------------------------------------------+--------------+-----------------------+-----------------------+---------+--------------------------------+----------+

you can see that, although there are now more false positives, Devel::Confess is now included in the top position. The reason is that Carp::Always and Devel::Confess are mentioned together in more places.

% setop --intersect <(lcpan mentions-for-mod Carp::Always   --json | td select content_path) \
                    <(lcpan mentions-for-mod Devel::Confess --json | td select content_path)
Carp-Always-SyntaxHighlightSource-0.03/lib/Carp/Always/SyntaxHighlightSource.pm
Task-BeLike-RSRCHBOY-0.007/lib/Task/BeLike/RSRCHBOY.pm
Acme-CPANModules-Import-CPANRatings-User-perlancar-0.001/lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm
Acme-CPANModules-Import-CPANRatings-User-stevenharyanto-0.001/lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm
Acme-CPANModulesBundle-PERLANCAR-0.004/lib/Acme/CPANModules/PERLANCAR/Retired.pm

This helps users that are using or looking at Carp::Always to also find Devel::Confess. (Actually this is not an ideal example, because Carp::Always itself has started to mention Devel::Confess directly, so users can just see the documentation of Carp::Always and find Devel::Confess.)

Many of the above places that mention both modules together are Acme::CPANModules modules, which are just glorified lists. You can help people find related modules by publishing such lists on CPAN, but actually publishing any module or POD which mention related modules together will work equally well.