CPANscan logo

CPANscan

Recent Perl modules, releases and favorites.
Last updated 10 April 2026 04:32 PM
Perl logo

Term-Form

Release | 10 Apr 2026 03:13 PM | Author: KUERBIS | Version: 0.563
Upvotes: 1 | CPAN Testers
Read lines from STDIN
Term::Form is a small Perl library for creating interactive, terminal-based forms so you can prompt for and edit a list of fields directly in a console session. You give it an array of arrays where each entry is a prompt and an optional default value and then call fill_form (or use the object-oriented interface) to let the user edit those values; fill_form returns the modified array structure when the user confirms or undef if they choose to go back. It supports common cursor and control-key editing, read-only rows, skipping items by regex, optional color and screen-clearing, marking truncated fields with a trailing tilde, and a few platform-specific options for Win32 codepage handling. The module expects a monospaced ANSI-capable terminal and Perl 5.10.1 or newer and has split out its readline behavior into Term::Form::ReadLine while remaining compatible with recent Term::Choose releases.
Perl logo

e

Release | 10 Apr 2026 02:31 PM | Author: TIMKA | Version: 1.38
Upvotes: 8 | CPAN Testers: Pass 90.9%N/A 9.1%
Beast mode unleashed
e is a compact, performance-minded toolbox that makes Perl one-liners and interactive debugging much faster and more convenient. It bundles a playground of helper commands such as repl for breakpoints, trace and watch for stack and reference inspection, prof and n for lightweight profiling and benchmarking, quick format converters and printers (j, yml, csv, x, p, d, dd, table), UTF-8 helpers, file and URL wrappers (f, l), simple HTTP calls (g, post), collection and set utilities (c, set), and several ways to run tasks in parallel (runt, runio, runf) or in series. The module is optimized to keep startup cost low by deferring work until features are used and is geared toward interactive, exploratory workflows and scripting. Be aware that it can overwrite existing functions with the same names so import order matters and runf uses forked processes which incur startup overhead and is capped at about 20 workers.
Perl logo

Runtime-Debugger

Release | 10 Apr 2026 02:31 PM | Author: TIMKA | Version: 1.13
Upvotes: 1 | CPAN Testers: Pass 90.0%N/A 10.0%
Easy to use REPL with existing lexical support and DWIM tab completion
Runtime::Debugger is a lightweight interactive REPL you can drop into a running Perl program to inspect and experiment with code inside the actual lexical scope, making it easy to peek at my and our variables, call functions and probe objects without leaving the context you are debugging. It provides DWIM tab completion that understands lexicals, hashes and method access, persistent command history, convenient short commands for printing and dumping data structures like d dd and p, and a levels_up option to evaluate at a specific caller level; version 1.13 added a vars command to list available variables. You use it simply by adding use Runtime::Debugger and calling repl or by invoking perl -MRuntime::Debugger -E 'repl', and it is aimed at cases where Devel::REPL or the standard debugger cannot see local lexicals. Known limitations the author calls out are that you cannot create new lexical my variables from the REPL and Control-C can sometimes leave the terminal in a wonky state, and you will need a system readline library installed for interactive editing.
Perl logo

Mail-Message

Release | 10 Apr 2026 01:15 PM | Author: MARKOV | Version: 4.05
Upvotes: 2 | CPAN Testers: Pass 95.8%N/A 4.2%
Processing MIME messages
Mail::Message is a Perl class that represents RFC2822 and MIME email messages as first class objects, keeping header and body as separate components and providing easy access to fields, decoded content, multipart parts, and common operations like get(), decoded(), build(), reply(), forward(), bounce(), print(), write() and send(). It is the mail-agnostic core used with Mail::Box for folder-specific behavior and can coerce or convert messages from MIME::Entity, Mail::Internet, Email::Simple and related formats so you can parse, inspect, construct and transmit emails from Perl without wrestling with low-level details. The module handles encoding and decoding, timestamp and label/flag management, and offers helpers for constructing replies and forwards via companion Construct::* modules while exposing methods to estimate size and traverse nested parts. This release series is mature and actively maintained as part of Mail-Message 4.05, which standardizes the message_id parameter name and fixes header folding and string output to always end with a newline, and the author notes a remaining limitation to address automatic transfer-encoding choices for body lines longer than 997 characters.
Perl logo

Mail-Box-POP3

Release | 10 Apr 2026 01:15 PM | Author: MARKOV | Version: 4.02
CPAN Testers: N/A 12.5%Unknown 87.5%
Mail::Box connector via POP3
Mail::Box::POP3 is a Perl module that lets your program treat a remote POP3 mailbox as a Mail::Box folder so you can list, read and manage messages using the Mail::Box framework while the underlying POP3 transport is handled by Mail::Transport::POP3. It supports common authentication modes including APOP, plain LOGIN and OAuth2 (with a special OAUTH2_SEP mode for some Microsoft services), configurable server, port and SSL options, and can transparently re-establish connections when servers support UIDs. The module focuses on retrieval: POP3 does not provide subfolders, folder creation or general server-side writing, so you can fetch headers and bodies and remove messages but you cannot create or fully manage folders on the server. It is part of the Mail-Box family and integrates with its message and body types. Note that releases 4.0 and up use an updated exception model and are not fully backward compatible with older v3 series, and the recent 4.x updates include migration to the Log::Report exception handling and minor bug fixes.
Perl logo

Mail-Box

Release | 10 Apr 2026 01:15 PM | Author: MARKOV | Version: 4.02
Upvotes: 16 | CPAN Testers: Pass 96.3%N/A 3.7%
Complete E-mail handling suite
Mail::Box is an object-oriented toolkit for working with mail folders in a uniform way, letting your Perl program read, write, search and manipulate mailboxes regardless of how they store messages. It provides a Mail::Box::Manager to open folders and subclasses that handle common formats like single-file mbox, per-message directories such as Maildir or MH, and remote stores like POP3 or IMAP, while offering conveniences such as delayed body parsing, locking, add/copy/move operations, subfolder handling and tied array/hash access for iterating messages. The module exposes a high-level API for message lookup by index or message-id, batch operations, and safe write/close semantics so it is useful for mailbox conversion, mail clients or automated mail processing. Note that some backends are read-only or partially implemented and that version 4 introduced a new exception model (Log::Report) and is not fully backward compatible with older 3.x behavior, so review the upgrade notes if you are migrating.
Perl logo

App-Test-Generator

Release | 10 Apr 2026 12:09 PM | Author: NHORNE | Version: 0.31
Upvotes: 1 | CPAN Testers: Pass 42.6%N/A 57.4%
Generate fuzz and corpus-driven test harnesses from test schemas
App::Test::Generator automates creation of fuzz and corpus-driven test harnesses from formal input/output schemas so you can add broad black‑box tests to Perl modules without hand‑writing every case. You supply a YAML or Perl schema describing a routine's parameters, return types, constraints and optional transforms and the tool produces Test::Most .t scripts that combine randomized fuzzing, deterministic boundary tests, static corpus checks, and optional property‑based tests via Test::LectroTest, with semantic generators for realistic data like emails, UUIDs and timestamps and options for reproducible runs. It integrates with mutation testing and a test dashboard so surviving mutants can drive new test stubs or augmented schemas, supports functional or OO call styles, handles positional and named args, and can inject per‑type and per‑field edge cases automatically. Recent updates added formal TER1/TER2/TER3 coverage metrics in the dashboard and new generate_index.pl flags to emit timestamped mutant TODO stubs and runnable augmented YAML schemas for surviving mutants. Note that the distribution uses a nonstandard licence for commercial use and asks commercial users to contact the author.
Perl logo

HTTP-BrowserDetect

Favorite | 10 Apr 2026 11:08 AM | Author: OALDERS | Version: 3.45
Upvotes: 27 | CPAN Testers: Pass 100.0%
Determine Web browser, version, and platform from an HTTP user agent string
HTTP::BrowserDetect parses an HTTP User-Agent string and tells you what browser, browser version, rendering engine, operating system, device type (mobile or tablet), and whether the client is a robot or an HTTP library. You create an object with a user agent string or let it read HTTP_USER_AGENT from the environment and then call intuitive methods like browser(), browser_version(), os(), os_version(), mobile(), tablet(), device(), engine(), robot() and robot_id() to drive feature flags, analytics, logging, or bot filtering. It also provides granular helpers for major/minor/beta parts of versions, many convenience boolean tests for specific browsers, OSes and devices, and a device_string and human-readable names for display. The module is careful about robot impersonation and will often report both the actual bot and the browser it pretends to be. Some older methods are deprecated in favor of clearer names and robot-related helpers are being consolidated, and you should remember that detection depends on the User-Agent string so it can be spoofed. The project is actively maintained on CPAN and GitHub and includes an online demo at browserdetect.org.
Perl logo

Text-PDF

Favorite | 10 Apr 2026 09:54 AM | Author: BHALLISSY | Version: 0.31
Upvotes: 1 | CPAN Testers: Pass 100.0%
PDF Manipulation and generation
Text::PDF is a Perl library for reading and modifying existing PDF files that comes with handy command line utilities for common tasks such as making booklets, removing edits and stamping text on every page. You can use it either from scripts to inspect and change PDF structure or directly via the included programs pdfbklt, pdfrevert and pdfstamp for quick jobs. The module is practical for developers and sysadmins who need programmatic PDF manipulation without relying on heavy GUI tools and it is distributed under the same license as Perl. Recent maintenance moved the source to GitHub and focused on bug fixes and small feature additions, so it remains a useful, maintained choice for basic PDF editing tasks.
Perl logo

Perl-Critic-Policy-Security-RandBytesFromHash

Release | 10 Apr 2026 09:34 AM | Author: RRWO | Version: v0.1.0
CPAN Testers: Pass 80.0%N/A 20.0%
Flag common anti-patterns for generating random bytes
Perl::Critic::Policy::Security::RandBytesFromHash is a linting rule for Perl::Critic that finds a common but unsafe pattern where programs try to produce random bytes by hashing predictable inputs such as rand, time, process id, reference addresses or internal counters. The policy explains why hashing those seeds with functions like MD5 or SHA gives a false sense of security and can be guessed by attackers, and it points developers toward secure alternatives such as Crypt::URandom, Crypt::SysRandom or Crypt::PRNG. It flags calls that look like hash functions or joins built from insecure sources and may sometimes report the same construct more than once. The module is aimed at catching legacy and new code that uses this risky shortcut and requires Perl 5.24 or later; the package is newly released as v0.1.0.
Perl logo

Geo-IPinfo

Release | 10 Apr 2026 09:13 AM | Author: IPINFO | Version: v3.4.0
Upvotes: 2 | CPAN Testers: Pass 88.5%Fail 11.5%
The official Perl library for IPinfo
Geo::IPinfo is the official Perl client for the IPinfo service that makes it easy to enrich an IP address with geolocation and related metadata. You can look up IPv4 and IPv6 addresses to get city, region, latitude/longitude, ASN, company, carrier, hostname, domain lists, privacy and abuse flags, country and currency data, and more, and the module returns those results as convenient objects you can query from your Perl code. It supports optional API tokens to lift the default free rate limit, offers a faster geo-only endpoint when you only need location data, lets you fetch single fields, and includes configurable caching and country name localization. The library is maintained by ipinfo.io and is useful for web apps, analytics pipelines, fraud detection, and any Perl project that needs reliable IP intelligence. Recent releases have expanded support for IPinfo service tiers including Lite, Core, and Plus and added features such as residential proxy detection to help with more advanced commercial use cases.
Perl logo

Langertha-Skeid

Release | 10 Apr 2026 12:39 AM | Author: GETTY | Version: 0.002
CPAN Testers: Pass 82.7%Fail 17.3%
Dynamic routing control-plane for multi-node LLM serving with normalized metrics and cost accounting
Langertha::Skeid is a lightweight control plane for routing requests across multiple LLM nodes while recording normalized token and cost usage so you can build consistent tenant billing and observability. It runs as an API edge that routes by model, health and capacity, forwards to cloud or local engines, and provides pricing and usage.report calls so totals can be read per key, model and time window. Usage storage is pluggable with built-in jsonlog (recommended, no DBI), SQLite and PostgreSQL backends, or you can supply callbacks or subclass methods to integrate with your own telemetry pipeline. Admin routes are protected by a bearer token and the proxy is nonblocking for production traffic. The recent 0.002 release removes a dependency on Langertha::Knarr and now talks directly to Langertha core value objects for cost and usage, keeping the hot path performance unchanged and including a small bugfix in response translation.
Perl logo

Langertha-Knarr

Release | 10 Apr 2026 12:05 AM | Author: GETTY | Version: 1.000
CPAN Testers: Pass 100.0%
Universal LLM hub — proxy, server, and translator across OpenAI/Anthropic/Ollama/A2A/ACP/AG-UI
Langertha::Knarr is a universal LLM hub and proxy that lets you expose any backend language model or agent to standard LLM HTTP clients and agent ecosystems, so a single Knarr instance can speak OpenAI, Anthropic, Ollama and agent protocols like A2A, ACP and AG-UI at the same time. It is modular with pluggable protocol translators, backend handlers and transports, so you can route requests to local Langertha engines, per-session agents, remote agent clients, or simple HTTP passthroughs, and you can add tracing or JSONL request logging by wrapping handlers. Knarr is built for real-time streaming and native async integration, ships as a ready Docker image for quick setup, supports multi-listen sockets, optional API-key authentication, and includes a PSGI adapter for traditional Plack deployments with the caveat that PSGI buffers streaming. The recent 1.000 release is a major rewrite that replaces the old Mojolicious core with an IO::Async + Net::Async::HTTP::Server + Future::AsyncAwait foundation, consolidates six wire protocols by default, and introduces the new pluggable handler architecture and decorator-based tracing and logging. If you need a single, flexible gateway to bridge clients and heterogeneous LLM backends or to present remote agents as OpenAI/Anthropic-style endpoints, Knarr is likely relevant.
Perl logo

Task-BeLike-PERLANCAR-Used

Release | 9 Apr 2026 10:50 PM | Author: PERLANCAR | Version: 20260410.0
All my modules which I currently use and install on a new perl installation
Task::BeLike::PERLANCAR::Used is a Task-style meta distribution that bundles the personal set of CPAN modules and command-line apps the author installs on a fresh Perl setup, so you can replicate their environment in one go. It is intended to be run with the perlancar cpanm wrapper and will pull in a very large list of utilities, developer tools and helper libraries to bootstrap a new perlbrew or system Perl, which makes it handy if you want the same toolset as the author. Running it can take a long time and may produce some install failures where dependencies or retired modules are missing, so treat it as a convenient starting point rather than a guaranteed turnkey installer.
Perl logo

Test2-Bundle-Numerical

Release | 9 Apr 2026 09:06 PM | Author: LNATION | Version: 0.02
CPAN Testers: Pass 100.0%
Numerical Quadmath/longdouble aware Test2 bundle
Test2::Bundle::Numerical is a small Test2 bundle that makes it easy to write floating point tests that behave correctly across different Perl builds, including those using quadmath or long double NV types. It simply loads the numerical Test2 plugin and exports numeric-aware test helpers so you can do tolerant comparisons, ULP checks, bit-level comparisons, and NaN or infinity checks while still using familiar test functions like ok and is. If you write numeric code or libraries that must pass on varying floating point implementations this bundle saves you from platform-specific test failures. This is an initial alpha release intended to validate the approach.
Perl logo

smallnum-XS

Release | 9 Apr 2026 08:44 PM | Author: LNATION | Version: 0.11
Upvotes: 1 | CPAN Testers: Pass 100.0%
Faster transparent "SmallNumber" support for Perl
smallnum::XS is a drop-in XS (C) implementation that gives Perl programs transparent, fixed-precision numeric behavior so arithmetic results are automatically rounded to a compact display form. Loading the module causes numeric operations to yield values at the module's configured resolution so that 10 + 20.452433483 becomes 30.45 by default and passing an import argument like '0.1' or '1' changes the decimal resolution to one place or integer math respectively. Because it is implemented in XS it runs significantly faster than the pure-Perl smallnum module, making it a good choice when you want consistent, lightweight numeric formatting with low overhead. The module is available on CPAN, documented via perldoc, maintained by LNATION, and distributed under the Artistic License 2.0.
Perl logo

App-MARC-List

Release | 9 Apr 2026 08:19 PM | Author: SKIM | Version: 0.08
CPAN Testers: Pass 100.0%
Tool to get MARC leader or field/subfield unique list
App::MARC::List is a lightweight base class for a command‑line tool that extracts and lists values from MARC records, including MARCXML. It exposes a simple interface with new and run where run reads an input file plus a field tag and optional subfield code from the command line and prints matching values, and it returns 0 on success or 1 on error. The module understands leader and control fields and can report value frequencies with the -f option while validating field definitions and input files. The latest release added an explicit check for the input file and several fixes to sorting and frequency output.
Perl logo

Aion

Release | 9 Apr 2026 07:39 PM | Author: DART | Version: 1.8
CPAN Testers: Pass 20.0%N/A 80.0%
A postmodern object system for Perl 5, such as “Mouse”, “Moose”, “Moo”, “Mo” and “M”, but with improvements
Aion is a modern, compact object system for Perl 5 that makes it easy to declare classes and roles with concise "has" properties and rich attribute options. It supports read/write/ro/wo permissions, required and constructor-less attributes, lazy defaults and builders, coercions, triggers, cleaners, custom accessors, predicates and clearers, plus role composition with with, requires and req. Aion includes a flexible type system and method signature checking via the :Isa attribute, and it adds extensible aspects so roles can introduce new attribute behaviors. It also provides dependency injection via the eon aspect working with the Aion::Pleroma container for autowiring services. If you know Moose, Moo or Mouse you will find Aion familiar but leaner and focused on extensible aspects and DI. The recent release improved pleroma autoinitialization by replacing the package variable with an Aion->pleroma accessor.
Perl logo

JSON-SL

Favorite | 9 Apr 2026 07:26 PM | Author: MNUNBERG | Version: v1.0.7
Upvotes: 5 | CPAN Testers: Pass 98.1%Fail 0.1%Unknown 1.7%
Fast, Streaming, and Searchable JSON decoder
JSON::SL is a streaming, incremental JSON decoder for Perl that uses an embedded C parser to let you extract pieces of a JSON document as they arrive instead of waiting for the whole payload. You tell it what to watch for using JSONPointer-style paths, or enable an "object drip" mode to receive completed nested objects in depth-first order, and feed partial data repeatedly to get matched values immediately along with their path context. It exposes the partial object graph via a root callback, supports options like UTF-8 handling and max size limits, and aims to simplify common streaming use cases without the boilerplate of a SAX-style callback API. Notes and caveats from the author include that full-string decoding is still slightly faster with JSON::XS, threads are not well supported, input should be UTF-8 or ASCII compatible, wildcard matching with the caret is all-or-nothing, and the object tree can contain placeholder undefs; a recent maintenance fix also corrected negative-number parsing for the Tuba event-oriented interface.
Perl logo

JSON-YY

Favorite | 9 Apr 2026 07:24 PM | Author: EGOR | Version: 0.04
Upvotes: 1 | CPAN Testers: Pass 96.3%Fail 1.2%Unknown 2.5%
Fast JSON encoder/decoder with document manipulation API, backed by yyjson
JSON::YY is a Perl interface to the high-performance yyjson C library that provides fast JSON encoding, decoding, and in-place document manipulation. It offers three layers of API: a minimal-overhead functional/keyword API for encode_json and decode_json calls, an OO API with JSON::XS-like configuration and chaining, and a Doc API that exposes a mutable JSON document tree addressed by JSON Pointer paths so you can read or surgically modify large JSON blobs without materializing full Perl structures. The Doc API supports typed value constructors, iterators, file read/write, RFC 6902 patch and RFC 7386 merge patch operations, and a zero-copy readonly decode mode for fast reads of medium and large payloads. Benchmarks show meaningful speed gains over JSON::XS in many encode scenarios and large-document workflows. Limitations include no implemented canonical (sorted-key) writer and inability to encode NaN or Infinity values. If you need a fast, low-overhead JSON tool with powerful path-based editing and familiar configuration options, JSON::YY is a strong choice.
Perl logo

CLI-Osprey

Favorite | 9 Apr 2026 06:22 PM | Author: ARODLAND | Version: 0.09
Upvotes: 10 | CPAN Testers: Pass 100.0%
MooX::Options + MooX::Cmd + Sanity
CLI::Osprey is a lightweight, pure-Perl toolkit for wiring command-line parsing into Moo/Moose/Mo objects. You declare attributes as command-line options with the option keyword and use new_with_options to build your app from argv; options are parsed with Getopt::Long::Descriptive and the module automatically produces short help, full help and man pages. It has built-in support for nested subcommands implemented either as separate classes or inline coderefs, keeps command-line names separate from Perl attribute names, and supports common option features like short flags, negatable and repeatable options, required flags and custom formats. Unlike MooX::Options it avoids mandatory XS dependencies and requires explicit subcommand registration for more predictable behavior, and it offers controls such as abbreviated long options, on_demand loading of subcommands, and preservation of argv. A few features from MooX::Options are not built in, such as native JSON option parsing or config-from-file helpers, but the author documents simple workarounds so this module is a practical, portable choice for building structured command-line apps in Perl.
Perl logo

Crypt-TimestampedData

Favorite | 9 Apr 2026 05:58 PM | Author: BRUGNARA | Version: 0.02
Upvotes: 1 | CPAN Testers: Pass 99.3%Fail 0.7%
Read and write TimeStampedData files (.TSD, RFC 5544)
Crypt::TimestampedData is a compact Perl library for reading, writing, and manipulating TimeStampedData (.TSD) files as specified by RFC 5544. It provides simple methods to decode and encode TSD blobs, extract embedded original content and RFC 3161 TimeStampToken(s), and build new .tsd files from a marked file plus timestamp tokens, and it ships with handy command line scripts for creating, inspecting, and extracting TSDs. The implementation is intentionally minimal and uses Convert::ASN1 while treating CMS structures and timestamp tokens as opaque DER blobs, so full CMS or timestamp verification should be handled by specialized libraries if you need it. The module is cross platform and requires Convert::ASN1. The recent 0.02 release added a SECURITY.md and CPAN metadata to align with coordinated vulnerability disclosure practices.
Perl logo

Music-Drummer

Release | 9 Apr 2026 05:49 PM | Author: GENE | Version: 0.7006
CPAN Testers: Pass 100.0%
Use MIDI::Drummer::Tiny
Music::Drummer is essentially a friendlier, searchable alias for the MIDI::Drummer::Tiny module that exists to make MIDI drumming functionality easier to find by using drum-related naming and keywords. It does not add new features but exposes the same simple API so you can instantiate a drummer object and use basic MIDI drumming controls such as a count-in and other playback actions provided by the underlying module. Choose this package if you want a clear, discoverable Perl module name for working with drum-related MIDI tasks without having to learn a different interface.
Perl logo

Museum-Rijksmuseum-Object

Release | 9 Apr 2026 03:34 PM | Author: RSHEAT | Version: 0.04
Upvotes: 1 | CPAN Testers: Pass 100.0%
Access the Rijksmuseum object metadata API
Museum::Rijksmuseum::Object is a lightweight Perl client for the Rijksmuseum object-metadata API that makes it easy to search the collection, retrieve full object records by objectNumber, and obtain image tile metadata for individual works. It requires an API key and a culture setting (for example "en" or "nl") and mirrors the Rijksmuseum API parameter naming so you can pass search options like page, page size, and image-only filters directly. Note that the Rijksmuseum has removed the API this module wraps, so for ongoing bulk harvesting you should use the OAI-PMH interface instead, and Museum::Rijksmuseum::Object::Harvester already uses OAI-PMH and continues to work with an updated base URL. The module is intentionally thin and focused on passing through the museum API rather than providing heavy helpers, though recent maintenance fixed Unicode handling in JSON decoding.
Perl logo

Data-PubSub-Shared

Favorite | 9 Apr 2026 03:31 PM | Author: EGOR | Version: 0.01
Upvotes: 1 | CPAN Testers: Pass 96.4%N/A 3.6%
High-performance shared-memory pub/sub for Linux
Data::PubSub::Shared is a Linux-only, 64-bit-Perl pub/sub implementation that uses mmap'ed shared memory to broadcast messages between processes with extremely low latency. Publishers write into a ring buffer and each subscriber has its own read cursor so many readers can independently consume the stream without blocking publishers. There are two main flavors: Int variants that offer lock-free, multi-producer publish via atomic fetch-and-add for simple numeric signals, and a Str variant that stores variable-length byte strings in a circular arena with mutex-protected publishing and lock-free readers. The module supports file-backed, anonymous (fork-inherited) and memfd-backed sharing, futex-based blocking waits and eventfd integration for event loops, batch publish/poll operations, per-subscriber overflow counting, and automatic recovery when a subscriber falls behind; note that the ring buffer never applies backpressure and will overwrite old messages when full. This is the initial release and it bundles high-throughput primitives, keyword helpers, and crash-recovery behavior for the string mode.
Perl logo

Term-Choose-Util

Release | 9 Apr 2026 02:54 PM | Author: KUERBIS | Version: 0.148
Upvotes: 2 | CPAN Testers: Pass 98.9%N/A 1.1%
TUI-related functions for selecting directories, files, numbers and subsets of lists
Term::Choose::Util is a small helper library that supplies ready-made terminal user interface widgets for letting a script’s user interactively pick directories, files, numbers or subsets from a list. You can call its functions directly or use the object interface, and it exposes many options to tune appearance and behavior such as color and mouse support, layout and ordering, margins and prompt text, cursor hiding and filesystem encoding handling so it plugs into command-line tools with minimal code. It provides focused utilities for browsing and choosing a directory, picking a file, selecting multiple directories, composing an unsigned number, choosing a subset from an array and presenting a simple settings menu that edits a config hash in place. The module expects Term::Choose and Perl 5.10.1 or newer and defaults to no exports, and recent releases include stability fixes such as preserving the caller’s supplied 'mark' option instead of altering it.
Perl logo

Term-Choose

Release | 9 Apr 2026 02:44 PM | Author: KUERBIS | Version: 1.782
Upvotes: 15 | CPAN Testers: Pass 99.1%N/A 0.9%
Choose items from a list interactively
Term::Choose is a terminal UI helper that lets Perl scripts present an interactive list of choices so users can pick a single item or mark multiple items from the keyboard or mouse; it offers both a simple functional interface and an object-oriented API, supports paging, column layouts, optional ANSI color, default selections, filtering via regex, and many layout and accessibility tweaks like margins, max width/height and index-based returns. It understands Unicode print widths, works on Unix and Windows (with Win32::Console support), and can use Term::ReadKey for better input handling and an optional XS line-folding module for speed, while requiring Perl 5.10.1 or newer. The module is highly configurable for scripts and command-line tools that need a polished interactive picker, with options to pre-mark items, skip or protect items from selection, show footers or info lines, and treat ambiguous-width characters according to environment variables. Recent updates fix sizing and marking bugs, tighten available-width/height handling, introduce a new truncate_long_tabs line-fold option, raise the minimum terminal size to 4×2, and include backward-incompatible changes to tabs_info, tabs_prompt and tabs_bottom_text, so review those options when upgrading.
Perl logo

Net-Nostr

Release | 9 Apr 2026 02:35 PM | Author: NHUBBARD | Version: 1.000000
CPAN Testers: Pass 80.0%N/A 20.0%
Client and relay library for the Nostr protocol
Net::Nostr is a Perl library that implements the Nostr decentralized social protocol and gives you both client and relay functionality so you can connect to relays, run a relay server, and build Nostr-aware apps and bots. It includes helpers for key management and event creation, WebSocket client and relay classes, message parsing and storage, encryption and signing, and a large collection of modules that implement many official NIP extensions such as authentication, encrypted payloads, channels, long-form content, media attachments, wallets and more. You can start with Net::Nostr::Key to manage identities and Net::Nostr::Event to create and verify events, then pick from higher-level modules for features you need. The distribution targets a recent NIP snapshot and supports dozens of NIPs, and notes that the older NIP-04 encrypted direct messages are deprecated in favor of NIP-44. If you are a Perl developer wanting to interact with the Nostr network or run a relay, this module provides a comprehensive, ready-to-use toolkit.
Perl logo

EV-Kafka

Release | 9 Apr 2026 01:52 PM | Author: EGOR | Version: 0.01
CPAN Testers: Pass 68.8%Fail 22.1%N/A 5.2%Unknown 3.9%
Async Kafka client using EV
EV::Kafka is a high-performance asynchronous Kafka client for Perl that implements the Kafka binary protocol in XS and plugs directly into the EV event loop for low-latency, pipelined I/O. It gives you a cluster-aware Client with automatic metadata discovery and broker routing, a full producer with batching, acks modes, idempotent and transactional (EOS) support, and a consumer with manual assignment or consumer-group join/sync/heartbeat, plus admin APIs and a low-level EV::Kafka::Conn when you need direct broker calls. The module is pure XS with no librdkafka dependency and works with AnyEvent applications, but it treats all payloads as raw bytes so you must encode UTF-8 yourself and some features are subject to build or protocol limits such as optional LZ4/gzip support, lack of GSSAPI/OAUTHBEARER, synchronous DNS resolution, and capped non-flexible API versions. This 0.01 initial release ships the core produce/consume, transactions, TLS and SASL, multi-partition fetch, and basic admin operations.