Recent Perl modules, releases and favorites.
Last updated 2 July 2026 12:31 PM
Last updated 2 July 2026 12:31 PM
JSON-JSONFold
Release | 2 Jul 2026 11:11 AM | Author: YAIRLENGA | Version: v0.2.2
Hybrid pretty/compact JSON output
JSON::JSONFold reformats pretty-printed JSON into a more compact but still readable layout, collapsing arrays and objects to reduce vertical space while preserving clarity and structure. It can be used as simple functions, an object-oriented formatter, a drop-in replacement for encode_json/to_json, or a streaming post-processor that folds JSON as it is written without buffering the entire document. The module supports configurable presets and per-call overrides for target width, indentation, key sorting and other folding options, and it can report basic formatting statistics when writing to filehandles. The recent 0.2.0 release adds grid layout support for arrays of similar arrays or objects and new presets to present such data in a tabular style, along with improved configuration handling and validation. JSON::JSONFold is a practical choice when you want human-friendly, space-efficient JSON for logs, command-line tools, or files and it integrates with JSON::PP by default for the initial pretty-printing step.
DateTime-Fiction-JRRTolkien-Shire
Release | 2 Jul 2026 10:56 AM | Author: WYANT | Version: 0.910
Upvotes: 1 | CPAN Testers: Pass 100.0%
DateTime implementation of the Shire Calendar from JRR Tolkien's classic, "Lord of the Rings"
DateTime::Fiction::JRRTolkien::Shire is a DateTime-compatible calendar class that models the hobbits' Shire calendar from Tolkien's Lord of the Rings, providing constructors, accessors and arithmetic so you can create, compare, stringify and convert Shire dates to and from epoch or other DateTime objects. It implements the Shire layout of twelve 30-day months plus five special holidays and an extra leap-day holiday, supports weekday and holiday names, strftime formatting via Date::Tolkien::Shire::Data, and duration arithmetic using a dedicated Shire duration class, while exposing almost the full DateTime interface with the one known omission of format_cldr. The module requires DateTime, keeps time-zone and time fields for interoperability, and intentionally uses the modern Gregorian leap-year rule rather than the simpler rule quoted in Appendix D so Shire dates stay aligned with our calendar. If you want to work with Tolkien-style dates in Perl this package handles construction from epoch or other DateTime objects, stringification, localized on_date event text, and arithmetic, and the latest release fixes argument handling so now(), today(), from_epoch() and from_object() properly accept the accented and traditional options documented.
Archive-SCS
Release | 2 Jul 2026 08:49 AM | Author: NAUTOFON | Version: 1.10
Read the contents of SCS union mount archives (HashFS)
Archive::SCS provides a simple API for treating SCS game archives and extracted directories as a single merged filesystem so you can mount multiple archive files or folders, enumerate directories and files, and read entries either by their path or by their hash. It hides archive-format details behind a consistent interface and supports multiple handlers such as directory, HashFS, HashFS2 and ZIP, letting you change which formats are active and powering the bundled scs_archive command line tool. The module is useful when you need to inspect or extract game data across several SCS packages without writing format-specific code, and recent updates (1.10) switched internal hashes to 16-byte hex strings, cut memory use for HashFS v1, and relaxed build requirements to make installation easier. Note that texture object handling is still evolving and may be inconsistent between format handlers.
OIDC-Client
Release | 2 Jul 2026 07:50 AM | Author: SMOURLHOU | Version: 1.07
OpenID Connect Client
OIDC::Client is a Perl library that implements an OpenID Connect and OAuth 2.0 client, letting your scripts or applications initiate authorization flows, build the provider authorization URL, fetch and refresh tokens, verify JWT ID tokens, introspect opaque tokens, retrieve userinfo, exchange access tokens for different audiences, and create web clients already configured with access tokens for calling protected APIs. It is configuration driven and supports multiple grant types and client authentication methods, claim mapping, automatic JWKS key rotation and helper objects for identities and access tokens, and it is intended for direct use in scripts or via framework plugins for Mojolicious, Catalyst or Dancer2. Recent updates added support for tls_client_auth, stronger startup checks for client authentication, a fix to avoid a Data::UUID-related runtime crash, and integration tests to improve reliability. Use this module when you need a ready-made, configurable OIDC/OAuth2 client in Perl to integrate with identity providers and secure API access.
HTML-Composer
Release | 2 Jul 2026 03:53 AM | Author: RAWLEYFOW | Version: 0.004
CPAN Testers: Pass 100.0%
Compose validated HTML from Perl data structures
HTML::Composer is a Perl library for building validated HTML from nested Perl data structures, inspired by TyXML and Hiccup, so you describe pages as arrays of tag names, optional attribute hashes and child arrays and the module renders tidy HTML or partial fragments. It validates output and will croak if validation fails, escapes text by default while offering an unsafe wrapper for raw insertion, and supports optional caching and compact class lists via attribute arrays. Use it when you want a programmatic, data-driven, high-performance way to produce safe, well-formed HTML from Perl rather than concatenating strings.
Mojolicious-Plugin-BarefootJS
Release | 2 Jul 2026 01:51 AM | Author: KFLY | Version: v0.17.0
Mojolicious integration for BarefootJS
Mojolicious::Plugin::BarefootJS makes it easy to run the BarefootJS server-side rendering runtime inside a Mojolicious app by registering a per-request "bf" helper that lazily creates a BarefootJS instance backed by BarefootJS::Backend::Mojo. With the plugin you can render BarefootJS-marked templates as native Mojolicious templates and access the same runtime from controllers and templates, giving you a straightforward way to combine Mojolicious routing and BarefootJS rendering. The plugin wires up the necessary helpers and hooks so the runtime only boots when needed, and if you prefer to run outside Mojolicious there is a BarefootJS::Backend::Xslate backend that drives the runtime with Text::Xslate instead.
BarefootJS-Backend-Xslate
Release | 2 Jul 2026 01:51 AM | Author: KFLY | Version: v0.17.0
Text::Xslate (Kolon) rendering backend for BarefootJS
BarefootJS::Backend::Xslate is a rendering backend that lets the BarefootJS runtime render Kolon (.tx) templates using Text::Xslate, so you can serve compiled BarefootJS templates from any PSGI/Plack app or from a plain Perl process without tying into a web framework. It binds the runtime into templates as the bf object so helpers emitted by the @barefootjs/xslate compile-time adapter can be invoked directly from templates, and it builds Text::Xslate with HTML auto-escaping enabled while providing mark_raw, encode_json, materialize and render_named hooks the runtime expects. You can pass an existing Text::Xslate instance or supply template paths and options when constructing the backend, making it a straightforward, drop-in way to render Kolon templates from Perl code.
BarefootJS
Release | 2 Jul 2026 01:51 AM | Author: KFLY | Version: v0.17.0
Engine- and framework-agnostic server runtime for BarefootJS marked templates
BarefootJS is a lightweight server-side runtime for templates compiled from JSX or TSX into marked templates and accompanying client JavaScript. Compiled templates call into a bf runtime object to perform tasks like JSON marshalling, marking raw strings, materializing JSX children, and invoking named templates. The runtime is intentionally engine and framework agnostic and delegates any environment-specific work to pluggable backends so the same core can be used with different template engines or web frameworks. Shippped backends include Xslate for PSGI/Plack and a Mojolicious plugin for Mojo applications. The core relies only on Perl core modules so you only load extra libraries when a chosen backend requires them, making this a good fit if you want a portable, backend-flexible server rendering layer for JSX/TSX-based templates.
SPVM-Resource-Coro
Release | 2 Jul 2026 12:41 AM | Author: KIMOTO | Version: 0.001
Libcoro Resources
SPVM::Resource::Coro is a small resource wrapper that packages the libcoro coroutine context switching C library for use in SPVM native extensions. It provides the coro.h header and coro.c source compiled as C99, auto-detects and supplies the platform-specific compiler flags and defines needed for the correct context switching implementation, and exposes those defines so you can add them into your SPVM builder config. You enable it in your build with use_resource('Resource::Coro') and then pull the resource defines into your config before compiling native code that uses coro_context and related APIs. The bundled code is taken from Coro 6.57 and this SPVM resource was first released in version 0.001.
Class-Unload
Favorite | 1 Jul 2026 10:05 PM | Author: ILMARI | Version: 0.12
Upvotes: 3 | CPAN Testers: Pass 100.0%
Unload a class
Class::Unload is a small utility that lets you unload a Perl class at runtime by clearing its symbol table and removing the module from %INC so a subsequent require will reload it. It also removes Moose metaclasses when present, and takes care of common issues around inheritance and older Perl versions so it is useful for test suites, plugin systems, live development or any situation where you need to reload code without restarting the process. The module is mature and conservative in scope; recent maintenance releases added repository and packaging tweaks and earlier updates explicitly improved Moose cleanup and compatibility with Perl 5.10 and older releases.
Future-IO-Impl-AnyEvent
Release | 1 Jul 2026 09:06 PM | Author: MATHIAS | Version: 0.03
Future::IO implementation using AnyEvent
Future::IO::Impl::AnyEvent is a lightweight backend that makes Future::IO run on the AnyEvent event loop. Simply loading the module registers AnyEvent as the Future::IO implementation so asynchronous primitives like sleep, timers, and other Future::IO operations execute on AnyEvent or its compatible loops such as EV. There are no new APIs to learn, just load it to integrate Future::IO with an AnyEvent-based event loop, which makes it a good choice when your application already uses AnyEvent or needs to coexist with AnyEvent-driven libraries.
Data-SortedSet-Shared
Release | 1 Jul 2026 08:10 PM | Author: EGOR | Version: 0.02
Shared-memory sorted set (ZSET) for Linux
Data::SortedSet::Shared provides a Redis-like sorted set that lives in a shared memory mapping on Linux so multiple processes can read and write the same ordered collection of members concurrently. Each member is a 64-bit integer with a double score and ties are broken by member id, and the set is implemented with an order-statistics B+tree plus a hash index so you get fast O(1) lookups of scores and O(log n) rank, pop and range operations while range scans run linearly through linked leaves. The module supports common ZSET-style operations such as add, incr, remove, rank, range_by_score, pop_min/pop_max, iteration and bulk adds, and it can be backed by a file, an anonymous mapping for forked children, or a transferable memfd, with an eventfd API for notifying other processes of updates. There is also a bundled Data::SortedSet::Shared::Strings helper that interns string keys to dense ids so string-keyed sets can be shared the same way. Note that this is Linux only, requires 64-bit Perl, scores must not be NaN, the mmap is writable by any process that opens it so do not share with untrusted users, and the futex-based lock recovers if a holder dies but cannot detect rare PID reuse.
Data-RoaringBitmap-Shared
Release | 1 Jul 2026 08:10 PM | Author: EGOR | Version: 0.01
Shared-memory Roaring bitmap (compressed uint32 set) for Linux
Data::RoaringBitmap::Shared offers a Linux-only, 64-bit-Perl implementation of a Roaring bitmap stored in shared memory so multiple processes can observe and mutate a compressed set of 32-bit unsigned integers via a backing file, memfd, or an anonymous mapping inherited across fork. It splits values by their high 16 bits into buckets and stores each bucket's low 16 bits either as a compact sorted uint16 array or as a 64k-bit bitmap, which keeps memory efficient for both sparse and dense workloads. The API covers membership, add, add_many, remove, cardinality, min/max, export to an array, and in-place union and intersection with another shared bitmap, while a futex-based write-preferring rwlock with dead-process recovery serializes mutations across processes. You size the fixed container pool at creation time and operations that would need more slots fail cleanly, so plan capacity for the number of distinct high-16 groups you expect. Notes for v1: there are no run containers, no xor or andnot operators, and bitmap containers are not down-converted back to arrays after removals. The module warns against reopening files from untrusted sources because a crafted backing file could subvert internal offsets. This is the initial 0.01 release from 2026-06-26.
Data-RadixTree-Shared
Release | 1 Jul 2026 08:10 PM | Author: EGOR | Version: 0.01
Shared-memory compressed radix tree (prefix tree) for Linux
Data::RadixTree::Shared implements a compressed radix-256 (PATRICIA) prefix tree in a Linux shared memory mapping so multiple processes can share a compact mapping from raw byte-string keys to 64-bit unsigned integer values. It offers fast exact lookup, existence checks and efficient longest-prefix queries ideal for routing tables, dispatch tables and autocomplete back ends, and uses edge compression so operations run in time proportional to key length. Trees are created with fixed node and label-arena capacities and can be shared via a backing file, an inherited anonymous mapping after fork, or a transferable memfd; concurrent readers run in parallel under a read lock while inserts and deletes take a write-preferring futex lock with dead-process recovery. Note that keys must be byte strings (encode character data first), deletes are lazy in this initial release and do not reclaim space until clear, and reopened backing files are trusted so do not reuse or open files from untrusted processes.
Data-NDArray-Shared
Release | 1 Jul 2026 08:10 PM | Author: EGOR | Version: 0.01
Shared-memory typed N-dimensional numeric array for Linux
Data::NDArray::Shared provides a Linux-only, 64-bit-Perl shared-memory numeric tensor you can use to share typed, row-major arrays across processes via a backing file, an anonymous mapping inherited across fork, or a memfd. It supports common numeric dtypes (f64, f32 and signed and unsigned integers down to u8), 1–8 dimensions and a fixed contiguous buffer, and offers element and flat indexing, bulk fills, reshape without copying, reductions (sum, mean, min, max), in-place scalar and element-wise arithmetic, and conversion to and from PDL including an optional zero-copy PDL alias when PDL is installed. Concurrency is handled by a write-preferring futex rwlock with dead-process recovery and a global lock ordering to avoid deadlocks when operating on two arrays, so concurrent writers serialize cleanly, but integer types wrap on overflow, there is an internal 1 TiB size cap, the PDL alias bypasses the lock and must be coordinated manually, and the shared mapping is writable by any process that opens it so do not expose backing files to untrusted code. This module is a practical choice when you need efficient, typed, cross-process sharing of numeric buffers for IPC or parallel processing.
Data-DisjointSet-Shared
Release | 1 Jul 2026 08:05 PM | Author: EGOR | Version: 0.01
Shared-memory union-find (disjoint-set) for Linux
Data::DisjointSet::Shared provides a Linux-only, shared-memory union-find (disjoint-set) structure for 64-bit Perl that lets multiple processes maintain and query a partition of a fixed universe of integer elements. You create it over an anonymous mapping, a backing file, or a memfd and then call union, find and connected to merge sets and obtain canonical representatives. The implementation uses union by size and path compression to keep operations near-constant time and stores a compact 8-bytes-per-element payload plus a small reader table. Because the arrays live in an mmap, every process that opens the same backing file or inherits the mapping across fork sees the same partition and contributes unions. Mutating operations, including find, perform path compression and therefore take a write-preferring futex lock with dead-process recovery, and a union_many operation lets you perform many unions under one lock for efficiency and atomic validation. The module exposes set_size, num_sets, capacity, reset, stats, sync and unlink, and capacity is fixed at creation so you cannot combine two separate structures. Note the mapping is writable by any process that opens it so do not share backing files with untrusted processes and that crash safety is best-effort with possible PID reuse limitations. Initial release 0.01 implements the functionality described.
Data-SpatialHash-Shared
Release | 1 Jul 2026 08:02 PM | Author: EGOR | Version: 0.01
Shared-memory spatial hash index for Linux
Data::SpatialHash::Shared is a Linux-only, 64-bit Perl module that provides a fast shared-memory spatial index for 2D or 3D points and simple volumes, letting multiple processes read and update the same map concurrently. You store points (with optional per-entity interaction radii) and then run proximity queries such as radius, k-nearest, axis-aligned box, per-cell scans, and collision-pair broad phases, with bulk insert/move and batched queries to amortize locking. It supports seamless toroidal worlds for wraparound maps and a spherical mode with geo helpers and cube-sphere cell ids for planet-style coordinates and LOD chunking. Concurrency is handled by a futex read/write lock that recovers if a holder dies and the map can be backed by a file or a memfd and integrated with an eventfd for notifications. Tuning is straightforward: pick a cell_size near your typical query radius and a bucket count sized to expected entries, and note the module warns about large-region scans and documents a PID-reuse corner case in lock recovery as a practical limitation.
Data-HyperLogLog-Shared
Release | 1 Jul 2026 08:02 PM | Author: EGOR | Version: 0.01
Shared-memory HyperLogLog cardinality estimator for Linux
Data::HyperLogLog::Shared provides a Linux-only, 64-bit-Perl HyperLogLog sketch that lives in shared memory so multiple processes can count distinct items into a single, tiny estimator. With the default precision of 14 it uses only a few dozen kilobytes and gives about 0.8 percent relative standard error, making it ideal for counting unique visitors, events, or keys without storing every item. Processes can share the same sketch via a backing file, an anonymous mapping inherited across fork, or a transferable memfd, and you can add items, add batches, read the current estimate, clear, merge two equal-precision sketches to get a union, and manage syncing or unlinking the backing store. Mutations are guarded by a futex-based lock with dead-process recovery so concurrent add and count operations are safe and a crash leaves the sketch consistent up to the last completed update. Do not share backing files with untrusted processes because the mapping is writable.
Data-Histogram-Shared
Release | 1 Jul 2026 08:01 PM | Author: EGOR | Version: 0.01
Shared-memory HdrHistogram for Linux
Data::Histogram::Shared provides a Linux-only, 64-bit-Perl implementation of an HdrHistogram kept in shared memory so multiple processes can record and read a single compact, fixed-size histogram. You configure the lowest and highest trackable integers and the number of significant figures to get a fixed relative error across many orders of magnitude, which makes this ideal for latency and response-time measurement where values span microseconds to seconds. The API lets you record single values or batches, query percentiles, min, max, mean and total count, merge histograms with identical geometry, and share the backing via a file, memfd or fork inheritance. It stores integer values only so you should scale floats yourself, and mutation is guarded by a futex-based write-preferring lock with dead-process recovery for safe concurrent use. Do not share writable mappings with untrusted processes and be aware the lock recovery does not detect PID reuse, otherwise this is a small, efficient tool for cross-process telemetry on Linux.
Data-CuckooFilter-Shared
Release | 1 Jul 2026 08:01 PM | Author: EGOR | Version: 0.01
Shared-memory Cuckoo filter for Linux
Data::CuckooFilter::Shared provides a compact, fixed-size cuckoo filter stored in shared memory for Linux so multiple processes can efficiently share approximate set membership data with support for deletions. You add byte strings and the filter stores 16-bit fingerprints rather than full items, so memory use scales with the configured capacity not item size, and contains returns true for "probably present" or false for "definitely absent" with no false negatives for items you actually added. The table can be backed by a file, an anonymous mapping inherited across fork, or a memfd passed between processes, and concurrent mutation is protected by a futex-based lock that includes dead-process recovery so many processes can add, remove, and query safely. The filter has a bounded capacity and add returns false if it is full, adds do not de-duplicate so duplicates increment the stored count, and you must remove an item as many times as you added it to fully forget it. Important caveats: removal may corrupt other items if you try to remove keys you never added because of 16-bit fingerprint collisions, cuckoo filters cannot be simply merged, it is Linux-only and requires 64-bit Perl, and wide-character strings must be encoded to bytes before use; also avoid sharing writable backing files with untrusted processes.
Data-CountMinSketch-Shared
Release | 1 Jul 2026 08:01 PM | Author: EGOR | Version: 0.01
Shared-memory Count-Min sketch for Linux
Data::CountMinSketch::Shared is a Linux-only, 64-bit Perl module that implements a Count-Min sketch in shared memory so multiple processes can maintain a compact, fixed-size approximate frequency counter. You add items (optionally with counts) and get estimates that never fall below the true count and are probabilistically bounded above by configurable epsilon and delta error parameters. The structure stores only a small matrix of 64-bit counters so memory usage depends on the error settings rather than the number of distinct items. It supports concurrent adds and estimates across processes via a backing file, an inherited anonymous mapping after fork, or a transferable memfd, and it can merge sketches with identical geometry to combine streams exactly. Mutation is guarded by a write-preferring futex lock with dead-process recovery and individual increments are safe enough to leave the sketch consistent after a crash. Note that items are taken as raw bytes so you must encode wide characters first and that the module uses the standard Count-Min update rule to keep merges sound.
Data-BloomFilter-Shared
Release | 1 Jul 2026 08:01 PM | Author: EGOR | Version: 0.01
Shared-memory Bloom filter for Linux
Data::BloomFilter::Shared is a Linux-only, 64-bit Perl module that implements a compact Bloom filter in shared memory so multiple processes can record and query set membership without storing the items themselves. You create a fixed-size filter by giving an expected capacity and a target false positive rate and the module maps a power-of-two bit array into shared memory via a backing file, a memfd, or an anonymous mapping inherited across fork. It hashes items once with XXH3 and uses double hashing to drive multiple probe positions, and exposes add, add_many, contains, merge, clear and introspection methods including an estimate of distinct items and bit-fill statistics. The filter guarantees no false negatives while false positives are tunable by your capacity and rate, and strings with codepoints above 255 must be encoded to bytes before use. Mutation is protected by a futex-based write-preferring lock with dead-process recovery so concurrent adds and merges are safe and crashes only lose the last incomplete operation. Merging folds another filter of identical geometry into yours by bitwise OR so multiple processes or producers and consumers can combine views. Be aware the mapped region is writable by any process that opens it so do not share backing files with untrusted parties. This is the initial release.
RT-Extension-AI Extension
RT-Extension-AI brings conversational AI features into Request Tracker 6 so teams can summarize ticket threads, assess sentiment, get suggested or translated replies, autocomplete text while composing, and even have an interactive assistant build new queues for them. The extension works with any REST-based conversation API and ships preconfigured examples for OpenAI, Google Gemini, and Anthropic Claude, with per-queue and global configuration, customizable prompts, and optional context files to feed example ticket histories into suggestions. Features appear both as scrip actions that update tickets automatically and as CKEditor toolbar tools for interactive use, and there is a beta natural-language search that turns plain English into TicketSQL queries. Be aware that some features can send large inputs to your AI provider so you should test token usage and limits before enabling broadly, and the natural-language search currently cannot infer your site-specific queue and custom field names unless you include them. Installation follows standard RT plugin steps and the extension is provided and supported by Best Practical Solutions.
Sys-Async-Virt
Release | 1 Jul 2026 07:34 PM | Author: EHUELS | Version: v0.6.5
Upvotes: 1 | CPAN Testers: Pass 100.0%
LibVirt protocol implementation for clients
Sys::Async::Virt provides an asynchronous Perl client for the LibVirt remote protocol so you can control hypervisors and virtual machines from nonblocking Perl code. It exposes most libvirt RPCs as awaitable methods that return Futures and integrates with Future::AsyncAwait, mapping the C API into object oriented Perl calls while converting bitmap and typed values into Perl-friendly structures. The module supports event subscriptions and callbacks for domains, networks, node devices, secrets and storage pools, and includes options for keepalive pinging and SASL authentication when needed. It is generated from the LibVirt v12.5.0 protocol so it works against newer servers and will raise errors for calls not supported by older servers. The distribution is experimental so the API may evolve and a few entrypoints and older protocol features are not yet implemented, but it is a practical choice for developers who need full featured, asynchronous LibVirt access from Perl.
Protocol-Sys-Virt
Release | 1 Jul 2026 07:22 PM | Author: EHUELS | Version: v12.5.1
Transport independent implementation of the remote LibVirt protocol
Protocol::Sys::Virt implements the LibVirt RPC protocol in Perl, providing the low-level message (de)serialization, constants and transport primitives needed to build LibVirt-compatible clients and, if desired, servers. It was created to enable truly asynchronous use of libvirt from Perl without relying on Perl threads and so fits into event-loop and future-based code such as Sys::Async::Virt. The distribution includes XDR-based serializers, typed-parameter helpers, URI and UNIX socket utilities and stream handling so you can encode and decode protocol messages and process domain events from an async stack. Recent releases track libvirt v12.5.0 and add support for the domain announce interface message types and related constants. Note that user-facing documentation is still limited so expect to consult examples and the source for advanced usage.
Git-Server
Release | 1 Jul 2026 07:11 PM | Author: BBB | Version: 0.047
Secure Git Server with more granular hooks capabilities than default git
Git::Server is a drop-in replacement for a plain Git server that adds richer server-side hooks and fine-grained access control so you can enforce per-user read and write permissions and trigger custom actions on pushes such as instant deployments. It is designed to be run behind SSH using forced-command entries in authorized_keys so each key is tied to a remote user and administrators can set up ACLs and hook behavior with the supplied installation guidance. Compared with other hook frameworks it aims to be more powerful while keeping dependencies low, making it a good choice if you need stronger server-side policy and automation without adopting a full hosted Git platform. The project is actively maintained on GitHub and accepts bug reports and pull requests.
App-Project-Doctor
Release | 1 Jul 2026 06:33 PM | Author: NHORNE | Version: 0.02
Unified pre-release health check for Perl CPAN distributions
App::Project::Doctor is a pre-release health-check tool for Perl CPAN distributions that runs a suite of diagnostic plugins to catch common packaging, metadata, test and CI problems before upload. You can run it from the command line or instantiate it in code to produce a Report object containing Findings and an exit code. It orchestrates a set of checks for tests, CI configurations, GitHub Actions YAML, META files, POD, declared dependencies, license consistency, basic security practices and overall CPAN readiness by composing existing tools and small plugin classes. Checks are run sequentially and their results are collected into a single report you can render or inspect. The recent 0.02 update tightens dependency scanning to avoid false positives, expands core-module exclusions, accepts more README filename variants, and adds a test dashboard plus runtime configuration support.
Music-VoicePhrase
Release | 1 Jul 2026 05:25 PM | Author: GENE | Version: 0.0110
CPAN Testers: Pass 100.0%
Construct a measured phrase of notes
Music::VoicePhrase is a lightweight Perl module for programmatically building measured musical phrases made of multiple voices with both pitch and rhythm. It generates rhythmic motifs and corresponding pitch lines by reusing the Music::Duration::Partition, Music::VoiceGen and Music::Scales tools, while exposing simple attributes to set the tonic, scale, octave range, allowed pitches, rhythmic pools, measure size and number of motifs. The module includes real‑time friendly state such as a priority queue, current index, note and onsets and provides MIDI-oriented controls like channel and patch so you can drive synths or MIDI streams. Recent updates added a patch attribute and fixed its type checking. If you need to algorithmically create or stream polyphonic phrases from Perl and want easy integration with the Music::* family and example scripts, this module is a good fit.
Catalyst-Plugin-I18N
Favorite | 1 Jul 2026 01:31 PM | Author: BOBTFISH | Version: 0.10
Upvotes: 5 | CPAN Testers: Pass 100.0%
I18N for Catalyst
Catalyst::Plugin::I18N adds internationalization support to Catalyst apps by letting you use gettext-style .po/.mo files or Locale::Maketext lexicons under your application's I18N namespace and calling $c->localize (or its alias loc) from controllers or templates. It provides helpers to get and set available languages, return the current language or a language tag, and enumerate installed languages with readable names based on I18N::LangTags::List. You can tweak how translations are handled by passing maketext_options to control Locale::Maketext::Simple behavior and the plugin includes an i-default fallback to your MyApp::I18N so missing keys can fall back sensibly. A recent update added an Installed Languages feature and improved i-default fallback handling.
WebService-OPNsense
Release | 1 Jul 2026 01:18 PM | Author: DJZORT | Version: 0.003
Perl client library for the OPNsense REST API
WebService::OPNsense is a lightweight Perl client for the OPNsense REST API that gives you convenient, lazy access to the firewall appliance from scripts and automation. Built with Moo and reusing WebService::Client, it authenticates with an API key and secret over HTTP Basic Auth and exposes controller objects for common areas like firewall rules, system status, DNS/DHCP, IPsec, OpenVPN, captive portal, traffic shaping and backups so you can query and manipulate the appliance without handcrafting HTTP calls. The module is alpha quality and the OPNsense API itself is not versioned so upgrades to the firewall can require updates to the client, but the author actively maintains it and the recent 0.003 release fixes endpoint path mismatches and adds example scripts for reverse DNS and service info.