Awesome Perl – Massive Collection of Resources
Not Perl6 modules ;-P
Another module list
We also recommend these lists.
- Task::Kensho
- Perlres – A list of resources about Perl
- PerlMaven.com list of Perl Software
- Slaven’s CPAN in a nutshell
- Many Task::** Modules. (ex. Task::Plack, Task::BeLike::…)
Contents
- Awesome Perl
- Args
- Audio
- Benchmarks
- Caches
- Class Builder
- CLI
- Cloud
- Commercial WebServices
- Container
- Data Format
- Database
- Database Drivers
- Date & Time
- Devices
- DevOps
- Event Loops
- Exception Handling
- File Manipulation
- Form Frameworks
- Images
- List Manipulation
- Logging
- Module Development
- Network
- ORM
- Package Management
- Processes and Threads
- Profiling
- Protocol
- Queueing
- REST Frameworks
- Science/Numerics
- Stream Manipulation
- Template Engines
- Testing
- Tools
- Video
- Web Frameworks
- Web Frameworks-Like
- Web Scraping
Args
Libraries for argument manifestation and validation.
- Data::Validator – Rule based validator on type constraint system.
- Params::Util – Simple, compact and correct param-checking functions.
- Params::ValidationCompiler – Validate method/function parameters.
- Smart::Args
Audio
- Audio::CD – Interface to libcdaudio (cd + cddb)
- Audio::Wav – Modules for reading & writing Microsoft WAV files.
Benchmarks
Libraries for benchmarking
- Benchmark
- Dumbbench
- Parallel::Benchmark – Benchmark in multiprocesses
Caches
Libraries to talk to Cache Softwares
- CHI – Unified cache handling interface, think DBI for caches
- CHI::Driver::DBI – DBI driver for CHI
- CHI::Driver::DBIC – DBIx::Class driver for CHI
- CHI::Driver::Memcached – Memcached driver for CHI
- CHI::Driver::MongoDB – MongoDB driver for CHI
- CHI::Driver::Redis – Redis driver for CHI
- Catalyst::Plugin::Session::Store::CHI – Use CHI module to handle storage backend for session data
- CGI::Application::Plugin::CHI – CGI-App plugin for CHI caching interface
- Mojolicious::Plugin::CHI – Interact with CHI caches
Class Builder
Libraries to support writing classes and meta programming
- Class::Accessor::Lite – Simple accessor generator.
- Class::Accessor::Lite::Lazy – Generate lazy accessors.
- Homer – Simple Prototype-based object system.
- Mo – Micro Objects. Mo is less.
- Moo – Class builder supporting meta programming.
- Moose – The one and only, Moose.
- Mouse – Yet another class builder like Moo/Moose.
- Object::Pad –
class Example { has $x; method reader { return $x } }
, experimental proving-ground for Cor - Object::Tiny – A class builder that is terse, fast, and tiny.
CLI
Libraries for developing CLI applications
- App::Cmd – Write command line apps with less suffering.
- Getopt::Long – Extended processing of command line options.
Cloud
- AWS::CloudFront – Lightweight interface to Amazon CloudFront CDN
- AWS::S3 – Lightweight interface to Amazon S3 (Simple Storage Service)
- Net::Amazon::EC2 – Interface to the Amazon Elastic Compute Cloud (EC2) environment.
- Net::AWS::SES – Perl extension that implements Amazon Simple Email Service (SES) client
- WebService::DigitalOcean – Access the DigitalOcean RESTful API (v2)
- WebService::Dropbox – Interface to Dropbox API
Commercial WebServices
- Net::Xero – Interface to Xero accounting
- PagerDuty::Agent – A perl PagerDuty client
- WebService::Spotify – A simple interface to the Spotify Web API
- WebService::Xero – Access Xero Accounting Package Public and Private Application API
- WWW::Shopify – object representing acess to a particular Shopify store
- WWW::Spotify – Spotify Web API Wrapper
Container
Libraries for Singleton Pattern implementation.
Data Format
Libraries for serializing, formatting and parsing
- BSON – Binary JSON format
- CBOR::Free – Support for (CBOR)[https://tools.ietf.org/html/rfc7049], IETF’s “binary JSON”
- Data::Dumper::Simple – Reduce and faster Data::Dumper and eval() equivalent
- Data::MessagePack
- JSON::PP
- JSON::XS
- Sereal
- Storable
- Text::CSV
- Text::CSV_XS
- Text::Markdown
- TOML
- XML::LibXML
- XML::Compile::Schema – Interpret schema elements and types: create processors for XML messages.
- XML::Compile::SOAP – Implements the SOAP 1.1 protocol, client side.
- XML::Compile::WSDL – Use SOAP with a WSDL version 1.1 communication specification file.
- YAML
Database
Libraries for dealing with relational databases
- DBI
- DBIx::Connector – Fast, safe DBI connection and transaction management
- DBIx::Handler – Fork-safe DBI handler
- DBIx::Inspector
- DBIx::QueryLog
- DBIx::Sunny – Useful DBI Wrapper
- DBIx::TransactionManager
Database Drivers
Libraries for using specific database products
Relational Databases
- DBD::CSV
- DBD::Firebird
- DBD::mysql
- DBD::ODBC – Any ODBC Driver. MS-SQL w/ placeholders
- DBD::Oracle – Oracle database driver for the DBI module
- DBD::Pg – PostgreSQL driver for DBI.
- DBD::SQLite
- DBD::Sybase – Sybase and MS-SQL. No placeholders w/ MS-SQL though
NoSQL Databases
- Cache::Memcached::Fast
- Mango – Pure-Perl non-blocking I/O MongoDB driver
- Redis
- Redis::Fast – Perl wrapper around hiredis driver
- Search::Elasticsearch – Offical Elasticsearch client library
- UnQLite
Date & Time
Libraries for working with dates and times
Devices
Libraries to talk to physical devices
- Device::Modem – Talk to modem devices conneted via serial port
- Device::Onkyo – Control Onkyo/Integra AV equipment via LAN or Serial
DevOps Tools
Libraries that help when you want to deploy software across networks on several hosts/are working across computer networks
- Rex – Remote Execution
Libraries that implement email creation and sending
Event Loops
Libraries for various event loops. Asynchronous programming if you like
- AE – Simpler, faster, newer AnyEvent API
- AnyEvent – the DBI of event loop programming
- EV – Uses libev, very fast and popular. Default for AnyEvent if present
- Event – Works well, but older
- IO::Async – Asynchronous event-driven programming
- POE – Common interface for several event loops
- Promise::XS – Promises in Perl
Exception Handling
Libraries that assist with and/or provide alternatives to eval{ die() }
- autodie – Replace functions with ones that succeed or die with lexical scope
- Exception::Class – A module that allows you to declare real exception classes in Perl
- Syntax::Keyword::Try – a try/catch/finally syntax for perl
- Throwable – a role for classes that can be thrown
- Try::Tiny – minimal try/catch with proper preservation of $@
- TryCatch – first class try catch semantics for Perl, without source filters
File Manipulation
- File::Util – Easy, versatile, portable file handling.
- Path::Tiny – Simple object-oriented file manipulation.
Form Frameworks
Libraries that take the boredom & repetition out of (web and UI) forms
- Catalyst::Controller::HTML::FormFu – Use HTML::FormFu in Catalyst.
- CGI::FormBuilder – Easily generate and process stateful forms.
- Form::Sensible – A sensible way to handle form based user interface.
- Form::Toolkit – A toolkit to build Data centric Forms.
- HTML::FormFu – HTML Form Creation, Rendering and Validation Framework.
- HTML::FormFu::ExtJS – ExtJS form generation from HTML::FormFu config files.
- HTML::FormHandler – HTML forms using Moose.
- Mojolicious::Plugin::FormFields – Lightweight, flexible form builder with validation and filtering.
- WWW::Form – Simple and extendable module that allows developers to handle HTML form input validation and display flexibly and consistently.
Images
Libraries for manipulating images
- Image::Magick – An object-oriented interface to ImageMagick’s image composing libraries.
- Imager
List Manipulation
Libraries for manipulation lists (arrays)
- Array::Unique – Tie-able array that allows only unique values
- List::AllUtils – Combines List::Util, List::SomeUtils and List::UtilsBy in one bite-sized package
- List::Compare – Compare elements of two or more lists
- List::Gen – Provides functions for generating lists
- List::MoreUtils – Provide the stuff missing in List::Util
- List::SomeUtils – Provide the stuff missing in List::Util
- List::Util – A selection of general-utility list subroutines
- List::UtilsBy – higher-order list utility functions
Logging
Libraries for generating and working with log files
Module Development
Libraries that simplify and improve Perl module development
- Dist::Zilla – http://dzil.org/
- Minilla – CPAN module authoring tool
Network
Libraries that help when you are dealing with computer networks
- DOCSIS::ConfigFile – Decodes and encodes DOCSIS config files
- NetAddr::MAC – Handle MAC addresses
Libraries that help when you are working across computer networks
- Net::SSH::Perl – SSH client implemented in Perl.
- Net::SSH2 – Wrapper for libssh2.
- Net::OpenSSH – Run commands remotely using the OpenSSH client.
- Net::OpenSSH::Parallel – Run remote commands in parallel using the OpenSSH client.
- Net::SSH::Any – Run remote commands using any module or binary client available.
- Net::SFTP::Foreign – SFTP client for remote file access.
- Object::Remote – Run Perl code on remote machines.
- Net::CLI::Interact – Automates interactive programs.
- Net::Appliance::Session – Automates interaction with appliances.
ORM
Libraries that implement Object-Relational Mapping or datamapping techniques
Package Management
Libraries for package and dependency management
- App::cpanminus
- Carton
- Pinto – Powerful local CPAN repos
Processes and Threads
Libraries for managing processes and threads
- Parallel::ForkManager – A simple parallel processing fork manager
- Parallel::Prefork – A simple prefork server framework
- Proclet – Minimalistic supervisor, a Perl port of foreman
Profiling
Libraries for examining run-time activity of your program
- Devel::KYTProf – Very light profiler for I/Os such as HTTP request-responses and SQL queries.
- Devel::NYTProf – Code profiler.
Protocol
Protocol clients and libraries
- Furl – Faster HTTP(S) Client
- HTTP::Tiny – Minimal and fast client. Included in the standard packages.
- LWP::UserAgent – Popular HTTP(S) Client
- Net::Curl – (libcurl)[https://curl.se/libcurl/] integration
- Net::DHCP – Send and receive DHCP packets
- Net::DNS – Resolve DNS host names
- Protocol::DBus – D-Bus in (pure) Perl
Queueing
Message Queue, Job Queue System..
- Gearman
- Minion – Pure-Perl job queue
- Net::RabbitMQ
- Net::Stomp
- Qudo
- Resque
- TheSchwartz
Science/Numerics
Hand-picked modules for research, science, numerics and hyper-computing
- BioPerl
- Chart::Clicker – Powerful, extensible charting
- PDL
- PDL (CPAN)
- PDL::Graphics::Gnuplot
- PDL::IO::*
- PDL::LinearAlgebra
- PDL::Stats
- Physics::*
Stream Manipulation
Libraries for manipulating event streams
- RxPerl – Perl implementation of Reactive Extensions / rxjs
REST Frameworks
Libraries for developing REST applications
- Catalyst::Action::REST – Automated REST Method Dispatching
- Dancer2::Plugin::REST – A plugin for writing RESTful apps with Dancer2
- Dancer::Plugin::REST – A plugin for writing RESTful apps with Dancer
- Raisin – a REST API micro framework for Perl
- Squatting – A Camping-inspired Web Microframework for Perl
Template Engines
Libraries and tools for templating
- HTML::Template – Templates for web pages
- Template::Alloy – TT2/3, HT, HTE, Tmpl, and Velocity Engine
- Template::Toolkit – Very Popular Template Processing System
- Text::MicroTemplate – Fast, simple and safe template engine written in pure-Perl and core modules.
- Text::MicroTemplate::Extended – Extended Text::MicroTemplate.
- Text::Template – Templates with embedded perl
- Text::Xslate – Faster template engine with XS. Supports multiple syntaxes.
- Tiffany – Generic interface for template engines. It makes it easy to use multiple template engines.
- Template::Magic – Magic merger of runtime values with templates.
Testing
Libraries for testing codebases and generating test data.
Testing Frameworks
- Test::Base – A Data Driven Testing Framework
- Test::Base::Less – Limited version of Test::Base
- Test::BDD::Cucumber – Implementation of the popular Cucumber framework in Perl
- Test::Class – Class-based testing. Support “setup” and “teardown”.
- Test::Deep – Test deep and complex data structures with great flexibility.
- Test::Deep::Matcher
- Test::Harness – Run Perl standard test scripts with statistics
- Test::Kantan – simple, flexible, fun “Testing framework”
- Test::More
Test Double
- Test::Exception
- Test::Fatal – Simple module for verifying exceptions.
- Test::Mock::Guard – Mocking package subroutines.
- Test::MockTime
- Test::mysqld
- Test::TCP – Launch temporary TCP Server
- Test::Time – Simple module for faking system time.
Coverage
- Devel::Cover
- Devel::Cover::Report::Coveralls Report to Coveralls
Tools
Some useful tools
- App::Ack – ack is a tool like grep, optimized for programmers.
- App::Nopaste – Post to various pastebins from the CLI
- Daiku – Make for Perl.
- Data::Printer – Colored pretty-print of Perl data structures and objects.
- Reply – Read-eval-print-loop(REPL) command-line tool.
- Riji – Static site generator using markdown and git mainly for blogging.
- Smart::Comments – Comments that do more than just sit there.
Libraries for developping command line applications
- Toolbox::Simple – Simplfy some common tasks in Perl.
- Script::Toolbox – Framework for the daily business scripts.
- Devel::Kit– Handy toolbox of things to ease development/debugging.
Libraries for handling configuration files
- Config::Tiny – Read/Write .ini style files with as little code as possible
Video
- FFmpeg – Interface to FFmpeg, a video converter written in C
- Video::Info – Retrieve video properties such as: height width codec fps
Web Frameworks
Libraries for developing Web applications
- Amon2
- Catalyst – Overflowing with features. Very popular.
- Dancer (Official site)
- Dancer2
- Gantry – Web application framework for mod_perl, cgi, etc.
- Kossy – A Web framework with simple interface.
- Mojolicious – An all in one framework.
- Poet – a modern Perl web framework for Mason developers
Middlewares
Libraries for creating HTTP middlewares
- Gazelle – Preforked Plack Handler for performance freaks
- Plack – PSGI server implementation and utilities for Web applications.
- Server::Starter – Process manager with the “graceful restart” feature.
- Starlet – High-performance PSGI Server
- Starman – High-performance preforking PSGI/Plack web server
- Twiggy – Event-driven PSGI application server
Web Frameworks-Like
Somewhere between templates and full on frameworks
- Embperl – Building dynamic Websites with Perl (sort of like Perl crossed with PHP)
- Mason – Powerful, high-performance templating for the web and beyond
Web Scraping
Libraries for extracting some information from websites