Recent Perl modules, releases and favorites.
Last updated 4 July 2026 04:31 PM
Last updated 4 July 2026 04:31 PM
Perl inference engine and AI-assisted compliance-checking platform
Chorus is a Perl-based symbolic inference platform for turning legal, policy or other normative text into deterministic, reproducible compliance-checking pipelines. It bundles a typed inference engine where rules can be written in Perl or in a compact YAML DSL, together with an AI agent companion that helps extract and formalize rules from source documents while leaving execution fully deterministic and offline. Chorus is suited to teams building auditable automation for compliance, policy enforcement or risk checks who want clear, reproducible decision logic rather than opaque statistical models. Recent releases add a declarative TERMINAL field for YAML pipelines, better frame selection and lifecycle hooks, logging and loop-guarding to avoid runaway cycles, plus expanded bilingual documentation and AI agent skills to streamline corpus-to-pipeline workflows.
A modern OpenSSL wrapper
Crypt::OpenSSL3 is a modern Perl wrapper around the OpenSSL crypto and TLS library that lets Perl code use SSL/TLS connections, asymmetric keys, symmetric ciphers, message digests, MACs, key derivation functions, and X.509 certificate handling through a set of focused modules. The top-level distribution provides lightweight error handling and introspection of how the underlying OpenSSL was built, exposing helpers to query version and build configuration so you can adapt to different OpenSSL installs. If you write Perl that needs secure network connections, certificate parsing and validation, or cryptographic primitives without dropping into C, this package gives you a direct, maintained interface to those OpenSSL features. The recent 0.010 release switched the license to Apache 2.0 and added conveniences such as DER encode/decode from strings, generic ASN.1 value support, PEM helper functions, an EDIPartyName class, a get_all_certs helper for X509::Store, and a set of memory-management fixes, making it easier and safer to work with modern OpenSSL capabilities.
Object-Remote
Release | 4 Jul 2026 02:34 PM | Author: EHUELS | Version: 0.005001
Upvotes: 20 | CPAN Testers
Call methods on objects in other processes or on other hosts
Object::Remote lets you create Perl objects and call their methods in other processes or on other hosts, typically over ssh, without having to install non-core modules on the remote side. It provides a simple API to connect to a remote interpreter, construct objects on that interpreter with new::on, obtain remote subroutine references with can::on, and perform asynchronous calls with its Future helpers. Configuration and behavior can be controlled with environment variables for the remote perl executable, event loop implementation, and logging options, and it can forward remote log events back to the local process. This makes it handy for running pieces of Perl code or maintenance tasks across machines while keeping your local code interface natural and minimal. Be aware of documented limitations though: all data is passed via JSON which can be slow or memory intensive for very large or deeply nested structures; the cooperative run loop requires you to yield control so I/O and timers run; high load can delay timers or starve connections; deadlocks are possible and a watchdog helper exists to mitigate them; and there are known issues with IO::Async on nested connections. Overall it is a powerful tool for remote execution and control when you need to work with remote Perl objects without deploying extra software on the far side.
Getopt-Class
Release | 4 Jul 2026 01:32 PM | Author: JDEGUEST | Version: v1.1.5
Upvotes: 3 | CPAN Testers: Pass 100.0%
A class based approach for options of Getopt::Long
Getopt::Class is a lightweight wrapper around Getopt::Long that helps you define, group and validate command line options as named classes of properties so different parts of your program can declare their own sets of options cleanly. You supply a dictionary that describes each option with type, aliases, defaults and validation rules and the module generates the Getopt::Long specs, parses the arguments and returns a blessed values object you can access as a hash or as object methods. Supported types include booleans, strings, integers, arrays, hashes, file and uri objects, datetimes and code actions, and it adds conveniences such as mirrored enable/disable or with/without options and automatic dash/underscore aliasing. The module provides class-level helpers to extract and validate only the options for a given feature, reports validation or parsing issues via an error object instead of dying, and wraps values in small typed objects for easier downstream use. The current 1.1.5 release made dependency updates only and did not change the public API.
Perl-Tidy
Release | 4 Jul 2026 01:24 PM | Author: SHANCOCK | Version: 20260705
Upvotes: 149 | CPAN Testers: Pass 100.0%
Indent and reformat perl scripts
Perl::Tidy exposes the perltidy formatter as a library so you can clean up and consistently style Perl source from within your own programs instead of calling the perltidy command line. Call Perl::Tidy::perltidy with files, string or array references, or objects that implement getline and print to read or write code, or supply argv and perltidyrc arguments to control formatting and to dump or inspect the effective options. You can insert custom prefilters and postfilters to transform input or output, or provide a formatter object with a write_line callback to receive tokenized lines for specialized analysis or processing. The routine returns an exit flag so your program can detect fatal parameter errors or warnings, and perltidy can also produce separate stderr, .ERR, log, tee, and debug streams as needed. Note that handling of decoded versus encoded UTF8 output strings changed in recent versions and is controlled with the -eos or -neos flags, so take care when passing or receiving string references. The module ships with the perltidy command line script and is installable from CPAN.
CTKlib
Favorite | 4 Jul 2026 01:08 PM | Author: ABALAMA | Version: 2.09
Upvotes: 2 | CPAN Testers: Pass 100.0%
CTK ToolKit library (CTKlib)
CTK (CTKlib) is a compact toolkit of Perl utilities and helper modules designed to simplify building daemons, automation "robots" and command line applications. It gives you a central CTK object to manage project layout, config files, data and temp paths, logging and debug output, command line options and plugin loading, and it bundles a variety of supporting modules for tasks such as DBI access, file handling, FTP/SFTP, serialization and running as a daemon. The library emphasizes simple, readable APIs and pluggable extensions so common infrastructure is handled for you while you focus on application logic. Note that versions 2.00 and later are not compatible with earlier releases and the 2.x series added a serializer, CTK::Daemon, CTK::Timeout and expanded plugin and network support while removing some deprecated utilities. If you need consistent configuration, logging, plugin and daemon support for Perl services or automation scripts CTK is likely a good fit.
Number-ZipCode-JP
Favorite | 4 Jul 2026 01:00 PM | Author: TANIGUCHI | Version: 0.20260630
Upvotes: 2 | CPAN Testers: Pass 100.0%
Validate Japanese zip-codes
Number::ZipCode::JP is a compact Perl module for checking whether a Japanese postal code is valid according to Japan Post rules, letting you construct a zip object from either two parts (area and suffix) or a single string with or without a dash and then call is_valid_number to verify it. You can limit validation to specific categories such as area or company codes by importing the matching table, and you can change the target code with set_number. The module relies on updatable table classes that are refreshed frequently to track postal changes, so it stays current with Japan Post data, and a past release fixed a regex compatibility issue to support older Perl versions.
Mail-Sendmail
Release | 4 Jul 2026 09:11 AM | Author: NEILB | Version: 0.83
Simple platform independent mailer
Mail::Sendmail is a lightweight, cross-platform Perl module that lets your script send email directly via SMTP with minimal setup. You provide message fields and options in a simple hash and call sendmail, and the module handles common needs like Date headers, Bcc and Cc, real names in addresses, retries and alternate servers, and optional quoted-printable encoding when MIME::QuotedPrint is installed. It only requires Perl 5 and a network connection, so it is handy for CGI pages and automation scripts. It is not intended for very large attachments because the whole message is built in memory. Headers are not MIME-encoded so accented characters may not always be handled unless you use MIME::QuotedPrint. You must configure or supply an SMTP server and note that SMTP authentication support is experimental.
Module-Generic
Release | 4 Jul 2026 06:25 AM | Author: JDEGUEST | Version: v1.6.0
Generic Module to inherit from
Module::Generic is a feature-rich base class for building Perl object APIs quickly and consistently. It provides a large collection of helper accessors and lvalue-capable setters for common types such as scalars, numbers, booleans, datetimes, URIs, IPs and UUIDs, plus machinery to turn hashes and arrays into object wrappers or dynamically created classes with typed fields via create_class. The module also centralizes error and exception handling, offers flexible serialization/deserialization (JSON, CBOR, Sereal, Storable::Improved), runtime class loading, debugging and coloured terminal output, and optional XS-accelerated utility routines for better performance. It is aimed at module authors and application developers who want to prototype or implement rich data objects without writing repetitive boilerplate, and the distribution pays close attention to thread and process safety while documenting which metaprogramming features should be run at startup to avoid races. Noteworthy in the recent v1.6.0 release are new pure-Perl subroutine introspection helpers (_subinfo and _subname) and further refinements to the numeric handling and cloning behavior.
File-Raw-Archive
Release | 4 Jul 2026 06:15 AM | Author: LNATION | Version: 0.01
Archive container reader/writer
File::Raw::Archive is a compact, streaming reader/writer for archive containers that makes it easy to list, inspect, extract, or build archives from Perl without loading whole files into memory. It ships with a robust tar plugin that understands real-world tar dialects including ustar, GNU @LongLink, and PAX and preserves sub-second mtimes and SCHILY.xattr.* extended attributes when extracting on platforms that support xattr. The API is simple and script-friendly with methods and exportable functions for open, each, list, extract, extract_all, and create, plus options for gzip compression, format selection, entry filtering, and safe extraction that blocks path traversal. For heavier workloads extract_all can dispatch file writes to a forked worker pool for parallel extraction and the module exposes a C plugin API so additional format plugins such as zip, cpio, or ar can be added at runtime. This release is the first public version and highlights streaming gzip handling, PAX global metadata support, entry filtering, and the plugin architecture.
Travel-Status-DE-IRIS
Release | 4 Jul 2026 05:53 AM | Author: DERF | Version: 2.05
CPAN Testers: Pass 100.0%
Interface to IRIS based web departure monitors
Travel::Status::DE::IRIS is a Perl client for the Deutsche Bahn IRIS web departure monitors that fetches scheduled and realtime departure/arrival information for a given station and returns structured Result objects you can use in scripts or infoscreens. It supports blocking requests and an experimental non‑blocking constructor that works with Mojo::Promise and Mojo::UserAgent, optional caching of station and realtime queries, automatic merging or preservation of trains that change IDs at a stop, and a with_related option to include nearby or subdivided platform entries. The module aims to mask IRIS quirks such as transfer trains and platform changes while exposing useful options like lookahead/lookbehind and access to related station metadata. Note that the IRIS backend is deprecated and this module is not actively maintained, so it is not recommended for new projects and you should consider Travel::Status::DE::DBRIS as an alternative. The current 2.05 release mostly updates station and meta databases to keep the built‑in station data current.
OpenSearch-Client
Release | 4 Jul 2026 01:25 AM | Author: MDOOTSON | Version: 3.007002
CPAN Testers: Pass 100.0%
An unofficial Perl client for OpenSearch
OpenSearch::Client is an unofficial Perl client that lets Perl applications talk to OpenSearch clusters for indexing, searching and cluster management. It was created when OpenSearch forked away from Elasticsearch and is derived from the familiar Search::Elasticsearch API, so existing Perl code using that client can be adapted more easily. The module defaults to connecting to localhost:9200 and provides a comprehensive API surface with documentation available in OpenSearch::Client::Manual. This distribution is maintained by Mark Dootson, is released under the Apache 2.0 license, and the 3.007.000 series represents the initial release with subsequent minor pod updates.
Net-Nostr-Relay
Release | 3 Jul 2026 10:35 PM | Author: NHUBBARD | Version: 1.001000
WebSocket relay server for the Nostr protocol
Net::Nostr::Relay is a compact, in-process Nostr WebSocket relay that accepts client connections, manages subscriptions, stores events in an indexed in-memory backend (or a pluggable store), and broadcasts matching events to subscribers. It implements the core Nostr protocol and several NIPs such as authentication (NIP‑42), relay info (NIP‑11), event deletion (NIP‑09), proof‑of‑work (NIP‑13) and expiration handling, and it respects event semantics like replaceable, ephemeral, and addressable events. The module offers practical controls for real deployments including per-connection rate limiting, configurable event and message size caps, subscription and filter limits, idle and graceful shutdown timeouts, optional TLS, and an on_event hook for custom validation or filtering. Events are not persisted across restarts unless you supply a persistent store, and you can also inject events programmatically for testing. This release splits the relay implementation and default RelayStore out of Net::Nostr into its own distribution and depends on Net::Nostr::Core for protocol objects and validation.
Net-Nostr-Client
Release | 3 Jul 2026 10:33 PM | Author: NHUBBARD | Version: 1.001000
WebSocket client for Nostr relays
Net::Nostr::Client is a lightweight WebSocket client for connecting to Nostr relays and exchanging protocol messages. It gives a callback-driven API to publish signed events, manage subscriptions and receive stored and live events, perform one-shot counts (NIP-45), and run negentropy set reconciliation (NIP-77), and it supports NIP-42 authentication. You can connect synchronously or asynchronously to ws or wss relays and control TLS verification via options like ssl_no_verify and ssl_ca_file. Register handlers for event, ok, eose, notice, count, closed, auth, neg_msg and neg_err to react to relay messages as they arrive. Methods will croak when called with bad arguments or while disconnected and assigning a new handler for a given event type replaces the previous handler. If you need programmatic, Perl-native access to Nostr relays with built in support for these NIPs, this module provides a straightforward, callback-based way to do it.
Net-Nostr-Core
Release | 3 Jul 2026 10:12 PM | Author: NHUBBARD | Version: 1.001000
Core tooling for the Nostr protocol
Net::Nostr::Core is a focused Perl toolkit that implements the core data types and protocol utilities for the Nostr decentralized messaging protocol. It provides modules like Net::Nostr::Event, Net::Nostr::Key, Net::Nostr::Filter and Net::Nostr::Message so you can create, sign, filter and process Nostr events and messages, and it is the foundation used by client and relay distributions. This first independent release splits core protocol functionality out of the larger Net::Nostr distribution, targets the current NIP set as of 2026-07-01, and makes HTTP support optional by lazy-loading AnyEvent::HTTP only for NIP-05 lookup and verification. If you want a full client or relay stack use the Net::Nostr shim which pulls in the recommended dependencies, but if you only need protocol primitives for building or testing Nostr tools, Net::Nostr::Core gives a compact, minimal implementation.
Perl5-Build-Warnings
Release | 3 Jul 2026 07:23 PM | Author: JKEENAN | Version: 0.06
CPAN Testers: Pass 100.0%
Parse make output for build-time warnings
Perl5::Build::Warnings is a small utility for parsing the output of make when building the Perl 5 core so you can study compiler warnings across a build. You point it at a plain text or gzipped make/test_prep log and it extracts warnings that match the typical "<file>:<line>:<char>: warning: ... [-W...]" form, normalizes the warning class to a "W..." name and exposes the results programmatically. The module can return a list of all parsed warnings, counts by warning class, or filtered lists for a particular warning class or source file, and it can pretty-print a summary to STDOUT. It has no runtime dependencies outside the Perl core and is primarily aimed at Perl core developers or maintainers who want a quick way to tally and inspect build-time warnings, provided the log uses the expected warning format.
JSON-Schema-Tiny
Release | 3 Jul 2026 05:39 PM | Author: ETHER | Version: 0.034
Upvotes: 3 | CPAN Testers: Pass 100.0%
Validate data against a schema, minimally
JSON::Schema::Tiny is a slim, fast Perl validator that checks ordinary Perl data structures against JSON Schema rules. It offers a simple functional call and an object-oriented API and returns a clear result indicating validity and, when validation fails, JSON Schema style error details. The module implements the most commonly used keywords so it is well suited for everyday validation tasks while deliberately omitting some advanced features such as external $ref resolution, annotations and several newer draft keywords to keep the code small and quick. You can tweak behavior with options like boolean-only results, depth limits, and tolerant handling of boolean or numeric-like values. Be aware that regexes from schemas are evaluated without sanitization so do not use untrusted schemas, and use a reliable JSON decoder such as Cpanel::JSON::XS so data types are preserved. For a more complete, specification-compliant alternative see JSON::Schema::Modern.
Crypt-DSA
Release | 3 Jul 2026 12:29 PM | Author: TIMLEGGE | Version: 1.22
CPAN Testers: Pass 100.0%
DSA Signatures and Key Generation
Crypt::DSA is a Perl library that implements the Digital Signature Algorithm so you can generate DSA key pairs, sign messages or digests, and verify signatures; it is written in Perl and uses Math::Pari for the heavy math. The API is modeled on Crypt::RSA and supports configurable p bit length, optional seed and verbosity during key generation, and automatic SHA-1 hashing of messages when you pass plain text to sign or verify. Note that DSA and SHA-1 are now considered weak for new signatures, so this module is best used for verifying legacy signatures or when a DSA signature is explicitly required. It does not yet provide built-in key file format conversions such as SSH key files.
IO-Compress
Release | 3 Jul 2026 12:29 PM | Author: PMQS | Version: 2.222
Upvotes: 20 | CPAN Testers: Pass 100.0%
IO Interface to compressed data files/buffers
IO::Compress is nominally a module for reading and writing compressed data in multiple formats, but this particular release is only a stub and contains no code. It exists mainly as a placeholder on CPAN for packaging or compatibility and therefore does not provide compression or decompression functionality itself. If you need to work with compressed data, use the concrete implementations such as IO::Compress::Gzip or IO::Compress::Bzip2 or other compression modules. The stub is maintained by Paul Marquess and is distributed under the same license as Perl.
Libvirt Perl API
Sys::Virt is a Perl XS binding for the libvirt API that lets Perl scripts and applications connect to and control virtualization hosts with a single, consistent interface. It supports opening connections to local or remote hypervisors via libvirt URIs, creating and defining domains, networks, storage pools and volumes, inspecting host capabilities and resource statistics, and registering event callbacks for domain, network, storage and device lifecycle changes. The module surfaces libvirt features such as authentication callbacks, CPU and migration helpers, stream and save/restore operations, and returns failures as Sys::Virt::Error exceptions so they are easy to catch from Perl code. Because it uses callbacks into C, you must deregister any registered callbacks before discarding a connection object to allow the connection to be closed and memory reclaimed. Sys::Virt is a mature, actively maintained binding that requires the libvirt library on the host and keeps up with libvirt additions for new constants and APIs, most recently adding the virDomainAnnounceInterface API and related constants as well as support for vCPU removal and related event and stats constants.
Mojolicious-Plugin-Localize
Release | 3 Jul 2026 07:31 AM | Author: AKRON | Version: 0.23
CPAN Testers: Pass 100.0%
Localization Framework for Mojolicious
Mojolicious::Plugin::Localize is a localization plugin for the Mojolicious web framework that gives you a dictionary-driven way to manage translated text and render it from controllers and templates. You register it with a nested dictionary or resource files and it merges entries while offering an override option, then exposes helpers like loc to fetch messages and localize->dictionary to inspect the merged data. Dictionary values can be Mojo::Template strings or code references so translations may include variable interpolation and additional lookups, and the module provides convenient short notation for keys such as de_tree_plural. It also supports preferred and default fallbacks via special keys underscore and dash, an end key to force final values, and a command to generate locale templates. The localize->preference helper is marked experimental and CLDR support is listed as a future enhancement. The plugin is inspired by Mozilla l20n, available on GitHub, and released under the Artistic License 2.0.
Extensible XML Reader and Writer
XML::Loy is a lightweight, extensible XML builder for Perl that makes it easy to construct, traverse and serialize small XML documents. It leverages Mojo::DOM to provide a simple API for creating elements, attributes, text and comments, selecting nodes with CSS3-style selectors and producing pretty-printed output with special content modes such as escaped, raw or armour-wrapped (for base64). The module supports namespaces and a pluggable extension system with bundled helpers for formats like Atom, XRD, GeoRSS, ActivityStreams, OStatus and HostMeta, and extensions can add convenience methods and preferred namespace prefixes or MIME types. Because it is written in pure Perl and emphasizes simplicity and extensibility over raw speed, XML::Loy is best suited for small serialized documents rather than huge, performance-critical parsing tasks. Recent releases include updates to stay compatible with modern Mojolicious, including a fix for Mojolicious 9.31.
Sendmail-PMilter
Release | 3 Jul 2026 07:03 AM | Author: GWHAYWOOD | Version: 1.28
Perl bindings for Sendmail/Postfix milter interface
Sendmail::PMilter is a pure-Perl implementation of the Sendmail Milter protocol that lets you write mail filters in Perl to inspect, modify, accept or reject messages as they flow through an MTA that supports milters. It implements modern Milter Protocol version 6 and exposes a simple API for registering callback handlers, configuring the listener (setconn or auto_setconn for Sendmail configurations), choosing a dispatch strategy for handling connections, and entering the protocol loop via main. The module ships several dispatchers for different concurrency models and the prefork dispatcher is the most exercised and recommended, while others are marked as not thoroughly tested. It exports the usual milter return codes so your callbacks can continue, reject, discard or accept messages, and it includes helpers to read Sendmail configuration values. Note the security advice in the docs: avoid running Perl milters as root and drop privileges after creating any privileged sockets.
Algorithm-Time-ToNumber
Release | 3 Jul 2026 06:39 AM | Author: VVELOX | Version: v0.0.1
Convert time to a number
Algorithm::Time::ToNumber converts clock times into simple numeric features for analytics and machine learning, with helpers for both naive and circular encodings. It offers two basic numeric mappings called noon_fail and midnight_fail that map time to a single number but have opposite wrap artifacts causing a gap at 12:00 or 00:00 respectively. For proper circular encoding it provides circle which returns two floats, sine and cosine of the time angle, so you can represent time-of-day without discontinuities and use both values as separate features for algorithms like isolation forest. The angle routine returns only the sine component for a cheaper single-value approximation but can produce overlapping points. There is also suricata_to_circle to parse Suricata EVE timestamps and return the same circle pair ready for modeling. Use this module when you need compact, model-friendly numeric representations of time-of-day.
Algorithm-Classifier-NaiveBayes
Release | 3 Jul 2026 03:55 AM | Author: VVELOX | Version: v0.0.1
A multinomial naive Bayes text classifier with Laplace smoothing
Algorithm::Classifier::NaiveBayes is a compact Perl module that gives you a ready-to-use multinomial naive Bayes text classifier with sensible defaults and a handful of practical tunables. You train it by feeding labeled strings and it tokenizes text (configurable splitter, lowercase and stop-word filtering) with optional n-grams, supports either raw-count or binary token weighting, and scores classes using log priors plus smoothed token probabilities with Laplace or Lidstone (add-alpha) smoothing. It provides simple train, untrain and prune operations, a classify method that returns the best class plus per-class scores and normalized probabilities, and an explain method that breaks down which tokens drove the decision. Models are JSON-serializable for saving and reloading, scoring options can be tweaked after training, and outputs are deterministic. Note that, as with most naive Bayes classifiers, returned probabilities may be overconfident and are best used for ranking or thresholding. This is the initial release of the module.
Client and relay library for the Nostr protocol
Net::Nostr is a full-featured Perl implementation of the Nostr protocol that lets you build both clients and relays and provides focused helpers for identity, event creation, messaging, storage, and many protocol extensions. The distribution is organized into many purpose-built modules such as Net::Nostr::Key for secp256k1 keypair and signing, Net::Nostr::Event for creating and verifying events, Net::Nostr::Client for WebSocket client connections, and Net::Nostr::Relay for running relay servers, plus dozens of NIP-specific helpers for things like encrypted direct messages, media attachments, lists, badges, and more. It targets a wide range of NIPs up to the 2026-07-01 conformance commit and is suitable for developers building clients, bots, relays, gateways, or embedding Nostr features into apps. Recent releases expanded protocol coverage and tightened validation, adding NIP-29 group identifiers, NIP-43 role definitions and role management checks, NIP-44 extended encryption and NIP-59 ephemeral gift wraps, NIP-78 app-data support, and other conformance and security improvements, and the library also supports secure TLS/wss relay connections.
Test2-Harness
Favorite | 3 Jul 2026 02:27 AM | Author: EXODIST | Version: 1.000172
A new and improved test harness with better Test2 integration
Test2::Harness is a backend test harness for Perl that runs and processes test files and provides tight integration with the Test2 testing framework. It is meant to be used as a library rather than a direct end user tool, so most people will interact with it through App::Yath which supplies the user interface and configuration built on top of Test2::Harness. The module modernizes and improves test execution for Perl projects, is actively maintained by Chad Granum, and its source code is available on GitHub.
Audio-Nama
Release | 3 Jul 2026 02:19 AM | Author: GANGLION | Version: 1.604
Multitrack recorder and digital audio workstation
Audio::Nama is a small Perl toolkit and command-line application for managing, auditioning, and routing audio samples from a terminal. It provides a text-based user interface built on the Tickit UI toolkit, with entry widgets that support completion, a console front end, and helper modules for defining reusable audio objects, global settings, and processing chains. The result is a lightweight, scriptable way for developers, sound designers, and live performers to browse sample libraries, assemble simple processing chains, and control behavior from the shell without a full graphical DAW. If you want a modular, Perl-centered approach to organizing and routing audio in a terminal environment, Audio::Nama is likely relevant.
MetaCPAN-Client
Favorite | 3 Jul 2026 02:18 AM | Author: MICKEY | Version: 2.044000
A comprehensive, DWIM-featured client to the MetaCPAN API
MetaCPAN::Client is a polished Perl client for the MetaCPAN API that gives you programmatic access to CPAN metadata and search functionality with a DWIM (do what I mean) layer to make common lookups simple. It covers authors, distributions, releases, modules, files, packages, mirrors, covers and CVEs, supports autocomplete, reverse-dependency queries, bulk scrolling of large result sets, POD fetching and download URL resolution, and lets you tune searches with field filtering, raw Elasticsearch filters and scroller options. The client is intentionally lightweight so it works well in scripts, daemons and CLI tools, and it lets you supply a custom user agent to enable caching or different HTTP backends. It is an official MetaCPAN namespace module and aims to implement the full API surface. Note that a recent change (v2.044.000) makes ResultSet items return an array reference, which may affect how you iterate or extract results.