File locking in Perl is usually done using the flock
function. Unfortunately, this only allows locks on whole files and is often implemented in terms of the flock(2)
system function which has some shortcomings (especially concerning locks on remotely mounted file systems) and slightly different behaviour than fcntl(2)
.
This class provides several methods for host name resolution. It is designed to be used with event loops. Names are resolved by your system's native getaddrinfo(3)
implementation, called in a separate thread to avoid blocking the entire application. Threading overhead is limited by using system threads instead of Perl threads.
Text::Unidecode provides a function, unidecode(...) that takes Unicode data and tries to represent it in US-ASCII characters (i.e., the universally displayable characters between 0x00 and 0x7F). The representation is almost always an attempt at transliteration-- i.e., conveying, in Roman letters, the pronunciation expressed by the text in some other writing system.
The HTTP::Negotiate module provides a complete implementation of the HTTP content negotiation algorithm specified in draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for the selection of a preferred content representation based upon attributes of the negotiable variants and the value of the various Accept* header fields in the request.
Magic is Perl's way of enhancing variables. This mechanism lets the user add extra data to any variable and hook syntactical operations (such as access, assignment or destruction) that can be applied to it. With this module, you can add your own magic to any variable without having to write a single line of XS.
This Perl library provides a function which tells whether a specific time falls within a specified time period. Its syntax for specifying time periods allows you to test for conditions like "Monday to Friday, 9am till 5pm" and "on the second Tuesday of the month" and "between 4pm and 4:15pm" and "in the first half of each minute" and "in January of 1998".
Term::ANSIColor provides constants and simple functions for setting ANSI text attributes, most notably colors. It can be used to set the current text attributes or to apply a set of attributes to a string and reset the current text attributes at the end of that string. Eight-color, sixteen-color, 256-color, and true color (24-bit color) escape sequences are all supported.
PPIx::Utilities
is a collection of functions for dealing with PPI
objects, many of which originated in Perl::Critic
. They are organized into modules by the kind of PPI
class they relate to, by replacing the "PPI
" at the front of the module name with "PPIx::Utilities
", e.g. functionality related to PPI::Nodes
is in PPIx::Utilities::Node
.
Internationalized Domain Names (IDNs) use characters drawn from a large repertoire (Unicode), but IDNA allows the non-ASCII characters to be represented using only the ASCII characters already allowed in so-called host names today (letter-digit-hyphen, /[A-Z0-9-]/i).
Use this module if you just want to convert domain names (or email addresses), using whatever IDNA standard is the best choice at the moment.
This module implements the Rijndael cipher which has been selected as the Advanced Encryption Standard. The keysize for Rijndael is 32 bytes. The blocksize is 16 bytes (128 bits). The supported encryption modes are:
MODE_CBC
---Cipher Block ChainingMODE_CFB
---Cipher feedbackMODE_CTR
---Counter modeMODE_ECB
---Electronic cookbook modeMODE_OFB
---Output feedback
This module opens a config file and parses its contents for you. The format of config files supported by Config::General is inspired by the well known Apache config format and is 100% compatible with Apache configs, but you can also just use simple name/value pairs in your config files. In addition to the capabilities of an Apache config file it supports some enhancements such as here-documents, C-style comments, and multiline options.
Testing code can involve making sure that files are created and deleted as expected. Doing this manually can be error prone, as it's easy to forget a file, or miss that some unexpected file was added. This module simplifies maintaining test directories by tracking their status as they are modified or tested with this API, making it simple to test both individual files, as well as to verify that there are no missing or unknown files.
List::SomeUtils
provides some trivial but commonly needed functionality on lists which is not going to go into List::Util
.
All of the below functions are implementable in only a couple of lines of Perl code. Using the functions from this module however should give slightly better performance as everything is implemented in C. The pure-Perl implementation of these functions only serves as a fallback in case the C portions of this module couldn't be compiled on this machine.
SQL::Translator
is a group of Perl modules that converts vendor-specific SQL table definitions into other formats, such as other vendor-specific SQL, ER diagrams, documentation (POD and HTML), XML, and Class::DBI
classes. The main focus is SQL, but parsers exist for other structured data formats, including Excel spreadsheets and arbitrarily delimited text files. Through the separation of the code into parsers and producers with an object model in between, it's possible to combine any parser with any producer, to plug in custom parsers or producers, or to manipulate the parsed data via the built-in object model. Presently only the definition parts of SQL are handled (CREATE, ALTER), not the manipulation of data (INSERT, UPDATE, DELETE).
This package provides tools for sorting and comparing Unicode data.
Email::MessageID generates recommended message-ids to identify a message uniquely.
Class::Inspector allows you to get information about a loaded class.
This module provides functions for fast reading and writing of files.
The DateTime::Locale modules provide localization data for the DateTime.pm class.
Module::ScanDeps is a module to recursively scan Perl programs for dependencies.
This Digest::Perl::MD5
has the same interface as the much faster Digest::MD5
, but it's a pure Perl implementation of MD5. Because of this it is slow but it works without C code.
Test::Class::Most
provides some more convenience when using Test::Class
.
This module verifies if requirements described in a CPAN::Meta object are present.
CGI::FormBuilder
provides an easy way to generate and process CGI form-based applications.