Recent Perl modules, releases and favorites.
Last updated 8 April 2026 04:31 AM
Last updated 8 April 2026 04:31 AM
AnyEvent-I3X-Workspace-OnDemand
Release | 8 Apr 2026 03:20 AM | Author: WATERKIP | Version: 0.011
An I3 workspace loader
AnyEvent::I3X::Workspace::OnDemand is a Perl helper for the i3 window manager that loads and swaps workspace layouts on demand, letting you define named groups with JSON layouts and switch between them via i3 tick events like "group:name". It automates renaming and restoring workspaces, can launch or "swallow" applications into the newly created layouts, and lets you attach custom handlers to workspace events so you can run commands or modify layouts programmatically. Configuration is simple and lives alongside your i3 config, so you can map keys to group switches and have different activity contexts (for example browsing or coding) loaded as needed. Recent updates include a fix to reliably set the active workspace on any non-empty event to avoid incorrect workspace detection during switches, along with improved X11 property handling and integration helpers for showing group information in the status bar.
Option processing yath style
Getopt::Yath is the command line option framework that drives the yath test harness and can be used standalone to define, parse and document complex CLI options for modular applications. You declare options in groups with rich types such as booleans, scalars, counters, lists and maps, attach defaults, environment variable bindings and triggers, and include option sets from other modules so plugins can provide their own flags. The parser offers flexible behavior for skipping or stopping at non-options, handling grouped tokens and invalid options, and returns a clear structured result with parsed settings, skipped items, remaining arguments and any environment changes. It also auto-generates user-facing help and POD output, making it a good fit when you need composable, well documented and extensible option handling for command line tools.
Module-CheckLatestVersion
Release | 8 Apr 2026 02:59 AM | Author: PERLANCAR | Version: 0.001
CPAN Testers: Pass 100.0%
Warn/die when a module is not the latest version
Module::CheckLatestVersion is a small utility for module authors that lets a module check at runtime whether the installed copy is the latest release and warn or die if it is not. It exports a single helper, check_latest_version, which defaults to checking the caller's package against an authority such as CPAN via Module::CheckVersion. You can make the failure fatal by passing the die option or by setting PERL_MODULE_CHECKLATESTVERSION_DIE and the check is skipped automatically when common automated testing environment variables are present so it will not interfere with CI. This first release is a lightweight way to surface out-of-date deployments and is available on CPAN and GitHub.
Content-addressable storage with deterministic UUID v5 identifiers
Apophis is a compact, high-performance content-addressable storage library for Perl that assigns deterministic UUID v5 identifiers to data by hashing content into a namespace, so identical content always yields the same stable ID and different namespaces isolate datasets. It stores objects in a two-level hex shard layout for filesystem scale and provides streaming identification and storage for large files with O(1) memory, atomic temp-then-rename writes, built-in deduplication, and simple API calls to identify, store, fetch, verify, remove and batch-process items plus metadata sidecars and a configurable store directory. The core is implemented in C via XS for maximum speed and uses the Horus UUID library, making the Perl layer a thin binding. Recent updates focused on build portability and fixed Windows threaded-Perl build issues to improve cross-platform reliability.
Cache-File-Simple
Favorite | 8 Apr 2026 01:44 AM | Author: BAKERSCOT | Version: 0.1
Dead simple file based caching meachanism
Cache::File::Simple provides a single exported cache() function that makes it trivial to store Perl scalars, arrayrefs, and hashrefs on disk with optional expiration times. You call cache($key) to fetch a value, cache($key, $value) to store one, pass a third unix-time argument to set an expiry, and delete an entry by storing undef. A manual Cache::File::Simple::cache_clean() routine removes expired entries, and two package variables let you change the on-disk location and the default expiry time. This module is aimed at simple, file-backed caching needs and requires no additional setup to get started.
CPAN-Meta-X
Release | 8 Apr 2026 12:46 AM | Author: PERLANCAR | Version: 0.010
CPAN Testers: Pass 100.0%
Catalog of custom (x_*) keys in CPAN distribution metadata being used in the wild
CPAN::Meta::X is a concise reference that catalogs the nonstandard metadata keys that authors put into CPAN distribution META files using the x_ prefix, plus the custom prereq phases, relationships, and resource keys people actually use. It helps module authors and tooling authors see common conventions such as x_authority (who maintains a release), x_provides_scripts (what scripts a distribution installs), x_examples, x_lists and x_benchmarks phases, and relationships like x_alt_for or x_features_from so you can understand or adopt established practices instead of inventing your own. The catalog is practical rather than prescriptive and is intended to improve interoperability and discoverability of community conventions. In the latest release it also documents the various x_authority schemes seen in the wild.
Test-Mockingbird
Release | 7 Apr 2026 10:53 PM | Author: NHORNE | Version: 0.08
Upvotes: 1 | CPAN Testers: Pass 100.0%
Advanced mocking library for Perl with support for dependency injection and spies
Test::Mockingbird is an advanced Perl testing utility that makes it easy to replace, observe, and inject dependencies during tests so you can isolate behavior and validate interactions. It offers both shorthand and longhand ways to install mocks, scoped mocks that auto-restore when they go out of scope, spies that record calls while leaving the original method running, and dependency injection for swapping collaborators. Convenience helpers such as mock_return, mock_exception, mock_sequence, and mock_once cover common test scenarios and you can stack, selectively restore, or globally restore mock layers with restore and restore_all. Built-in diagnostic routines give structured and human readable views of active mock layers to help debug complex test suites without changing behavior. The module is provided as-is without warranty and ships under licence terms that grant GPL2 for personal single user use while other uses require a licence from the author.
LLM-SimpleClient
Release | 7 Apr 2026 10:31 PM | Author: KPRISTINE | Version: 0.01
Simple LLM client with multiple provider support
LLM::SimpleClient is a lightweight Perl wrapper for sending single, stateless text prompts to large language model providers over their REST APIs. It handles API authentication, request formatting, response parsing, and can automatically fail over to configured backup providers if a request fails. The module supports Mistral, HuggingFace Router, and OpenRouter and accepts simple options such as api_key, model, temperature, max_tokens, top_p, timeout, and an arrayref of fallback provider configurations. Its interface is minimal: create a client with new(...) and call ask($text) to receive a hashref containing success, content, error, and provider. Because each call is independent and no conversation history is stored, this module is best suited for single-shot queries from scripts, web services, or tools that need quick one-off LLM calls without session management.
MIDI-Drummer-Tiny
Release | 7 Apr 2026 09:58 PM | Author: GENE | Version: 0.7004
Upvotes: 3 | CPAN Testers: Pass 100.0%
Glorified metronome
MIDI::Drummer::Tiny is a lightweight toolkit for programmatically building drum parts as MIDI files rather than a live drum machine. It gives you convenient defaults and high-level helpers for common drummer actions such as metronomes in many time signatures, count-ins, pattern-based grooves, synced multi-voice patterns, fills, flams, rolls and crescendo rolls, accented or ghost notes, tempo and channel control, and optional soundfont support for rendering. You work with musical durations and named percussion patches or numeric MIDI notes and the module accumulates beat counts so you can compose phrases and fills reliably across bars. If you write scripts to generate backing tracks, algorithmic rhythms or example grooves for DAW import this module will save time and avoid low-level MIDI fiddling. Recent updates improved the documentation and added an eg/groove-patterns.pl example and tighter integration with a new Grooves helper so pattern libraries can either return raw data or be applied directly to a drummer object. If you need real-time GUI tools or a full drum sampler this is not the right fit, but for automated MIDI drum score generation it is a practical, well-documented choice.
PDF-Imposition
Favorite | 7 Apr 2026 09:42 PM | Author: MELMOTHX | Version: 0.26
Upvotes: 2 | CPAN Testers: Pass 100.0%
Perl module to manage the PDF imposition
PDF::Imposition is a Perl tool for preparing PDFs for print by rearranging logical pages onto physical sheets so they fold and bind correctly, for example creating booklets or multi-up layouts. It reads page size from the source PDF and offers many common imposition schemas such as 2up and 4up plus signature-based arrangements borrowed from ConTeXt, while letting you specify output filename or suffix, signature size, whether the last page should act as a cover, paper size for cropmarks and basic PDF metadata. Cropmark generation is handled via PDF::Cropmarks so imposed sheets can be trimmed accurately. You call the impose method to produce the new PDF and get the output filename back. The module assumes pages share the same dimensions and is aimed at printing workflows where you need reliable, configurable page reordering.
App-Bin-Search
Release | 7 Apr 2026 08:40 PM | Author: SKIM | Version: 0.03
CPAN Testers: Pass 100.0%
Tool to bitwise search of data in hexadecimal stream
App::Bin::Search is a minimal base class for a command line utility that searches a hexadecimal data stream for a given pattern across all bit offsets. It accepts a hex stream and a search token and scans each bit-aligned shift, reporting matches and the bit offset where a match was found, with options to show binary output or verbose per-offset listings. The API is intentionally tiny: construct with new and call run, which returns 0 for success and 1 for error. It depends on Bit::Vector and Getopt::Std and is handy when you need to locate sequences that may not be byte-aligned. Recent 0.03 updates improved option validation and added a test for a non-existent option.
NBI Slurm module
NBI::Slurm is a Perl library and command-line toolkit that makes it easy to define, configure and submit SLURM jobs on HPC clusters. Its core classes let you build a job object (NBI::Job) and an options object (NBI::Opts), set names, commands, output paths, threads, memory and runtimes, generate the SLURM header and submit with a single call that returns the job id. The distribution includes utilities for listing, viewing and launching jobs and provides helpers to check SLURM availability and run system commands while capturing stdout, stderr and exit codes. It supports common workflow needs like job arrays, GPU queues and interactive sessions and adds higher‑level features such as an optional energy‑aware scheduler. A recent release harmonized the session CLI so it accepts a -t time string in addition to the older -h hours flag, making interactive session invocation more flexible.
Image-ExifTool
Release | 7 Apr 2026 07:58 PM | Author: EXIFTOOL | Version: 13.55
Upvotes: 44 | CPAN Testers: Pass 100.0%
Read and write meta information
Image::ExifTool is a mature Perl library for reading, writing and creating metadata across a very large range of file types, from JPEG/TIFF and RAW camera formats to PDFs, MP4, audio and many others, including vendor maker notes. It provides both a simple procedural interface and a full object-oriented API so you can extract tag hashes, query or format individual tags, set new values, copy metadata between files and write changes back to disk. The module handles tricky details such as EXIF/IPTC/XMP encodings, embedded documents, geolocation lookups and structured tags, and lets you add user-defined tags through a configuration file or at runtime. A rich set of options controls filtering, conversion, grouping and write behavior and you can queue, save and restore batches of changes for scripted workflows. The code is actively maintained and widely used; note that the API methods are not thread safe.
Fast IO operations using direct system calls
File::Raw is a Perl module that speeds up common file tasks by calling the operating system directly rather than using PerlIO, making reads, writes and metadata operations much faster. It gives simple, familiar helpers such as slurp, spew, append and atomic_spew, as well as line-oriented tools like each_line, lines_iter, head and tail, memory-mapped access for zero-copy reading, and fast copy/move/unlink and directory utilities. The module also provides a cached stat facility to cut down on repeated syscalls, predicate-based line filtering, hooks for transforming data on read or write, and platform-tuned optimizations such as sendfile and copyfile for native performance. If you work with large files, do a lot of file metadata checks, need memory-efficient line processing, or want atomic writes, File::Raw is a practical way to get noticeably better IO performance in Perl.
OpenAPI-Modern
Release | 7 Apr 2026 06:40 PM | Author: ETHER | Version: 0.133
Upvotes: 5 | CPAN Testers: Pass 100.0%
Validate HTTP requests and responses against an OpenAPI v3.0, v3.1 or v3.2 document
OpenAPI::Modern is a Perl library that validates HTTP requests and responses against OpenAPI v3.0, v3.1 and v3.2 specifications, returning detailed JSON::Schema::Modern::Result objects to tell you exactly which parts of a message do not match the spec. It is built on a fully spec-compliant JSON Schema evaluator and can load your OpenAPI document, follow $ref chains, infer parameter types, and locate the correct path and operation for a given request so you can validate parameters, headers, request bodies and responses at runtime or in tests. The module works natively with Mojolicious message objects and will best-effort convert common request/response types from other frameworks, and it bundles up-to-date OpenAPI metaschemas so you can validate or extend schema dialects. There are a few unsupported corners of the spec to be aware of, for example multipart messages, application/x-www-form-urlencoded encodings and automated verification of Authorization headers are not implemented, and querystring handling depends on preserving the raw query string. Recent releases notably added full parsing of OpenAPI 3.2 query parameter styles and much improved cookie header parsing so complex query and cookie encodings are now handled correctly.
Sign PDF files with CMS/CAdES signatures and RFC3161 timestamps
PDF::Sign is a Perl toolkit for adding CMS/CAdES digital signatures and RFC3161 timestamps to PDF files, producing PAdES‑compatible output and integrating with PDF::API2 or PDF::Builder. It lets you configure key paths and tools via a single config call or package variables and then prepare and apply signatures with prepare_file and sign_file, including options for visible or invisible signature widgets, and add DocTimeStamps with prepare_ts and ts_file. Verification is supported through verify_signatures which reports signer, timestamps and validity and can perform full chain checks when given a CA bundle. The module calls an external openssl binary for cryptographic operations and uses curl if available to contact timestamp authorities, falling back to LWP::UserAgent, so you will need those tools available on your system. Low level helpers such as cms_sign, ts_query and tsa_fetch are provided for advanced use. Recent changes in 0.06 include safer handling when a produced signature exceeds the reserved space by returning the original PDF with a warning instead of corrupting it, and a fix to PDF date timezone formatting plus added tests for date compliance.
JSON-Schema-Modern
Release | 7 Apr 2026 06:08 PM | Author: ETHER | Version: 0.635
Validate data against a schema using a JSON Schema
JSON::Schema::Modern is a robust Perl validator that evaluates data against JSON Schema up to the 2020-12 draft, letting you check Perl data structures or JSON strings for conformity to complex schemas and OpenAPI documents. It is extensible so you can register additional schemas, custom format validators, media type decoders and encodings, and it offers options for short-circuiting, annotation collection, default value handling and loose number or boolean handling to suit different inputs. The module includes caching and serialization helpers for reuse in long-running or preforked apps and is designed to be specification-compliant while still allowing practical tweaks for real-world data. Note that it will not automatically fetch schema documents from disk or the network and custom format or media handlers are not serialized, and the author recommends using a reliable JSON decoder such as Cpanel::JSON::XS for best typing. A recent enhancement in version 0.635 makes default values returned by schemas directly available in the evaluator result, so missing properties can be reported or injected into instance data when the with_defaults option is used.
Bot-IRC-X-WwwShorten
Release | 7 Apr 2026 05:57 PM | Author: GRYPHON | Version: 1.06
CPAN Testers: Pass 100.0%
Bot::IRC plugin for automatic URL shortening
Bot::IRC::X::WwwShorten is a lightweight plugin for the Perl Bot::IRC framework that gives your IRC bot the ability to shorten URLs on demand. It leverages WWW::Shorten with TinyURL as the backend so users can type a command like "tiny http://example.com" and the bot will reply with a compact TinyURL link, keeping channel conversation tidy and links easy to share. The plugin is simple to enable in a Bot::IRC configuration and is useful for anyone running a Perl-based IRC bot who wants quick, automatic link shortening. Source, documentation, and tests are available on GitHub and MetaCPAN, and the module is distributed under the Artistic License 2.0.
Bot-IRC-X-UriTitle
Release | 7 Apr 2026 05:57 PM | Author: GRYPHON | Version: 1.07
CPAN Testers: Pass 100.0%
Bot::IRC plugin to parse and print URI titles
Bot::IRC::X::UriTitle is a small plugin for Bot::IRC that watches conversation for posted URLs, fetches the linked resource, extracts the page title and posts that title back into the chat so users can see what a link points to without leaving IRC. It plugs directly into Bot::IRC for simple installation and is designed to skip or gracefully handle links that do not resolve to HTML or do not contain a title. The distribution is maintained and has had recent updates including a security policy and a bump of the minimum Perl requirement because a dependency changed, and it is released under the Artistic License 2.0.
Bot-IRC-X-Time
Release | 7 Apr 2026 05:57 PM | Author: GRYPHON | Version: 1.06
CPAN Testers: Pass 100.0%
Bot::IRC plugin for some time functions
Bot::IRC::X::Time is a small plugin for Bot::IRC that adds common time and date utilities to your IRC bot. It can report the current date and timestamp, return Zulu (UTC) time, and parse human friendly date strings into timestamps or formatted dates. It also converts timestamps or dates into readable durations with a "when was" command and can take a duration like "1 year, 2 months" and return the corresponding past date with "ago". If your bot needs to display, parse, or convert times and durations in chat, this module provides a simple, ready-made set of commands that handle most reasonable date and time formats.
Module-Install-RTx
Release | 7 Apr 2026 05:52 PM | Author: BPS | Version: 0.45
Upvotes: 1 | CPAN Testers: Pass 100.0%
RT extension installer
Module::Install::RTx is a helper for packaging and installing extensions for Request Tracker (RT); it plugs into Module::Install and maps common extension directories like bin, lib, html, etc to RT's plugin paths so your extension lands where RT expects it. It also provides simple guards and conveniences such as declaring the minimum RT version required, testing for other RT plugins as prerequisites, banning installation on newer RT releases when appropriate, and toggles for readme generation, initial-data checks, and removal of obsolete files during upgrades. Use it from your Makefile.PL and point RTHOME at the RT installation you target, and remember to call RTx with the full extension name. If you distribute RT extensions this module saves a lot of manual install steps and helps avoid version and deployment mistakes.
Bot-IRC-X-Retort
Release | 7 Apr 2026 05:50 PM | Author: GRYPHON | Version: 1.07
CPAN Testers: Pass 100.0%
Bot::IRC plugin for bot-retorting to key words
Bot::IRC::X::Retort is a small plugin for Bot::IRC that lets your IRC bot automatically reply when specific keywords appear in chat. After adding the plugin you can set or remove responses at runtime with simple commands like "retort <term> with <retort string>" to teach the bot a reply and "retort <term> clear" to delete it. It is a lightweight way to add canned reactions, jokes, or alerts to channels without writing custom event handlers and works well for bot maintainers who want quick, configurable keyword-triggered responses.
Bot-IRC-X-Reminder
Release | 7 Apr 2026 05:46 PM | Author: GRYPHON | Version: 1.09
CPAN Testers: Pass 100.0%
Bot::IRC plugin for scheduling reminders
Bot::IRC::X::Reminder is a plugin for Bot::IRC that lets you schedule timed reminders for IRC users or channels using simple chat commands. You ask the bot with a phrase like "remind <nick|channel> <every|at|in> <time expr> <message>" and it will post the reminder at the scheduled time, supporting one-off "at" or "in" schedules and recurring "every" schedules with crontab-style expressions or human-friendly clock and duration formats. The keyword "me" targets your own nick and the bot only delivers a reminder if the target is online when it fires. It also provides helper commands to list or forget reminders, making it a handy, low-friction way to add scheduled notifications to an IRC workflow.
Bot-IRC-X-MetarTaf
Release | 7 Apr 2026 05:43 PM | Author: GRYPHON | Version: 1.06
CPAN Testers: Pass 100.0%
Bot::IRC plugin for METAR and TAF reporting
Bot::IRC::X::MetarTaf is a simple plugin for the Bot::IRC framework that adds METAR and TAF lookup commands to an IRC bot. METARs are current aviation weather observations and TAFs are short term aerodrome forecasts, and the plugin lets users type commands like "bot metar <airport code>" or "bot taf <airport code>" to retrieve the latest reports for a given airport. It is useful for pilots, dispatchers, flight planners, or any chat community that needs quick access to aviation weather from inside IRC, and it integrates with Bot::IRC with minimal configuration while offering source and documentation on MetaCPAN and GitHub.
Bot-IRC-X-Message
Release | 7 Apr 2026 05:42 PM | Author: GRYPHON | Version: 1.08
CPAN Testers: Pass 100.0%
Bot::IRC plugin for leaving messages for nicks
Bot::IRC::X::Message is a small plugin for Bot::IRC that lets an IRC bot accept and store short messages addressed to other nicknames and then deliver them when the recipient is next seen or joins a channel. Users tell the bot to save a note with a simple command such as "bot message user2 This is a message for you" and the plugin acknowledges and later posts the saved text to the intended nick. It is lightweight, easy to add to any Bot::IRC-based bot, and handy for bot operators who want basic offline message delivery without building a larger system. Note that recent releases raised the minimum required Perl to 5.16 to follow upstream dependency requirements, so make sure your Perl installation meets that version.
Bot-IRC-X-ManagementSpeak
Release | 7 Apr 2026 05:39 PM | Author: GRYPHON | Version: 1.06
CPAN Testers: Pass 100.0%
Bot::IRC plugin for rendering management-speak
Bot::IRC::X::ManagementSpeak is a tiny plugin for the Bot::IRC framework that makes your bot produce management-speak on demand. Add the ManagementSpeak plugin to a Bot::IRC instance and use the "mspeak" command in channel to have the bot emit corporate buzzwords and jargon for fun, testing, or filler content. The module is lightweight and easy to drop into existing bots, hosted on CPAN and GitHub, and released under the Artistic License 2.0. Recent updates include raising the minimum Perl version to Perl 16 to match a dependency change and routine improvements to testing and CI.
Bot-IRC-X-Feeds
Release | 7 Apr 2026 05:38 PM | Author: GRYPHON | Version: 1.09
CPAN Testers: Pass 100.0%
Bot::IRC plugin to watch and notify on changes in RSS feeds
Bot::IRC::X::Feeds is a Bot::IRC plugin that lets your IRC bot monitor RSS feeds and post new items to channels. It provides simple commands to add a feed with an optional comma-separated list of channels, list tracked feeds, and remove a single feed or all feeds. Polling is configurable via the x-feeds settings where interval is measured in minutes and max_per limits how many items are fetched per feed per poll, with defaults of interval 10 and max_per 5. To restrict announcements to particular channels use the optional forums argument and the Bot::IRC::Join plugin so the bot knows its channels. Recent maintenance added a security policy and raised the module's minimum Perl requirement to align with upstream dependencies.
Bot-IRC-X-Dice
Release | 7 Apr 2026 05:35 PM | Author: GRYPHON | Version: 1.08
CPAN Testers: Pass 100.0%
Bot::IRC plugin for dice rolling
Bot::IRC::X::Dice is a lightweight plugin for Bot::IRC that lets your IRC bot parse and simulate dice rolls from simple expressions such as "roll 2d6+2". It is aimed at channels that need quick random-number or tabletop roleplaying support, letting users request dice results directly in chat without extra tooling. The module is small and focused, easy to add to a Bot::IRC instance via the plugins list, and its source and documentation are available on MetaCPAN and GitHub. It is distributed under the Artistic License 2.0.
Bot-IRC
Release | 7 Apr 2026 05:31 PM | Author: GRYPHON | Version: 1.48
Upvotes: 2 | CPAN Testers: Pass 100.0%
Yet Another IRC Bot
Bot::IRC is a lightweight, plugin-driven framework for building IRC bots that are meant to run like Unix services, with built-in daemon control and optional pre-forked worker processes for concurrency. The core is intentionally small and lets you add features via simple plugins or inline plugin hashes that provide init hooks, message handlers, scheduled ticks, helper subs and help text, while the framework supplies convenient runtime primitives for replying, messaging, joining channels, changing nick, and managing settings. You configure connections, spawning, logging and persistent storage at construction time and start the bot from the command line with familiar start, stop and reload commands. Core bundled plugins cover common tasks such as ping handling, join tracking, seen/history, infobot and karma, and you can load storage backends like Store::SQLite for better persistence and performance. If you want an extensible, service-friendly IRC bot that favors small core logic and easy extensibility through hooks and plugins, Bot::IRC is a good fit.
Log-Dispatch-Email-Mailer
Release | 7 Apr 2026 05:20 PM | Author: GRYPHON | Version: 1.15
CPAN Testers: Pass 100.0%
Log::Dispatch::Email subclass that sends mail using Email::Mailer
Log::Dispatch::Email::Mailer is a simple adapter that lets Log::Dispatch send log messages as email by using the Email::Mailer framework. It makes it easy to wire up alerting so you can send plain text emails, rich HTML messages, attachments, and templated content while still controlling the mail transport by passing in your own Email::Mailer object. By default messages are buffered and sent on flush or when the logger is destroyed, but you can disable buffering to have each log call send its own email. This module is a good fit if you already use Log::Dispatch and want flexible, feature-rich email delivery without hand-rolling MIME or transport handling. Recent releases bumped the minimum required Perl to v5.16 to match changes in MIME::Types.