MooX::HandlesVia
is an extension of Moo's handles
attribute functionality. It provides a means of proxying functionality from an external class to the given attribute.
Lingua::Translit
can be used to convert text from one writing system to another, based on national or international transliteration tables. Where possible a reverse transliteration is supported.
Test::MockObject allows you to create objects that conform to particular interfaces with very little code. You don't have to reimplement the behavior, just the input and the output.
This package provides a class method constructs a new Net::IMAP::Simple
object. It takes one required parameter which is the server to connect to, and additional optional parameters.
Crypt::PasswdMD5
provides various crypt()-compatible interfaces to the MD5-based crypt() function found in various *nixes. It is based on the implementation found on FreeBSD 2.2.[56]-RELEASE.
This package provides a way to have readable configuration files outside your Perl script. Configurations can be imported, sections can be grouped, and settings can be accessed from a tied hash.
This module implements a Singleton class from which other classes can be derived. By itself, the Class::Singleton module does very little other than manage the instantiation of a single object.
ExtUtils::Config is an abstraction around the %Config hash. By itself it is not a particularly interesting module by any measure, however it ties together a family of modern toolchain modules.
This module simply interpolates option file hints in @ARGV
by the contents of the pointed files. This enables option reading from files instead of or additional to the usual reading from the command line.
GnuPG::Interface
and its associated modules are designed to provide an object-oriented method for interacting with GnuPG, being able to perform functions such as but not limited to encrypting, signing, decryption, verification, and key-listing parsing.
This module provides Path::Tiny
types for Moose, Moo, etc. It handles two important types of coercion: coercing objects with overloaded stringification, and coercing to absolute paths. It also can check to ensure that files or directories exist.
Stream::Buffered is a buffer class to store arbitrary length of byte strings and then get a seekable filehandle once everything is buffered. It uses PerlIO and/or temporary file to save the buffer depending on the length of the size.
Tie::Hash::Method
provides a way to create a tied hash with specific overridden behaviour without having to create a new class to do it. A tied hash with no methods overridden is functionally equivalent to a normal hash.
This way of associating structs with Perl space objects is designed to supersede Perl's builtin T_PTROBJ
with something that is extensible (structs can be associated with any data type) and opaque (the C pointer is neither visible nor modifiable from Perl space).
The namespace::clean pragma will remove all previously declared or imported symbols at the end of the current package's compile cycle. Functions called in the package itself will still be bound by their name, but they won't show up as methods on your class or instances.
Module::Manifest
is a simple utility module created originally for use in Module::Inspector
.
It can load a MANIFEST
file that comes in a Perl distribution tarball, examine the contents, and perform some simple tasks. It can also load the MANIFEST.SKIP
file and check that.
The Regexp::Grammars
module adds a small number of new regex constructs that can be used within Perl 5.10 patterns to implement complete recursive-descent parsing. It allows you to go beyond matching complex, nested and recursive structures, and allows you to parse and extract hierarchical data from it.
It allows you to extract any archive file of the type .tar, .tar.gz, .gz, .Z, tar.bz2, .tbz, .bz2, .zip, .xz,, .txz, .tar.xz or .lzma without having to worry how it does so, or use different interfaces for each type by using either Perl modules, or command-line tools on your system.
MooseX::NonMoose allows for easily subclassing non-Moose classes with Moose, taking care of the details connected with doing this, such as setting up proper inheritance from Moose::Object and installing (and inlining, at make_immutable time) a constructor that makes sure things like BUILD methods are called. It tries to be as non-intrusive as possible.
The Benchmark::Timer class allows you to time portions of code conveniently, as well as benchmark code by allowing timings of repeated trials. It is perfect for when you need more precise information about the running time of portions of your code than the Benchmark module will give you, but don't want to go all out and profile your code.
This module causes any warnings during testing to be captured and stored. It automatically adds an extra test that will run when your script ends to check that there were no warnings. If there were any warnings, the test will fail and output diagnostics of where, when and what the warning was, including a stack trace of what was going on when it occurred.
Test::MockModule
lets you temporarily redefine subroutines in other packages for the purposes of unit testing. A Test::MockModule
object is set up to mock subroutines for a given module. The mocked object remembers the original subroutine so it can be easily restored. This happens automatically when all MockModule
objects for the given module go out of scope, or when you unmock()
the subroutine.
This module allows you to build a variable package that contains a package template and can use it to build variant packages at runtime. Your variable package will export a subroutine which will build a variant package, combining its arguments with the template, and return the name of the new variant package. The implementation does not care about what kind of packages it builds, be they simple function exporters, classes, singletons or something else.
The fundamental task of the autoformat subroutine is to identify and rearrange independent paragraphs in a text. Paragraphs typically consist of a series of lines containing at least one non-whitespace character, followed by one or more lines containing only optional whitespace. This is a more liberal definition than many other formatters use: most require an empty line to terminate a paragraph. Paragraphs may also be denoted by bulleting, numbering, or quoting (see the following sections).