Awesome Perl
A curated list of awesome Perl resources, including frameworks, libraries and software. Inspired by awesome-go.
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
- Cryptography
- Commercial WebServices
- Container
- Data Format
- Database
- Database Drivers
- Date & Time
- Devices
- DevOps
- Event Loops
- Exception Handling
- DOM Manipulation
- 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
- Type Checking
- Video
- Web Frameworks
- Web Frameworks-Like
- Web Scraping
- Network Security
- Digital Forensics
- Reverse Engineering
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.
- Audio::SndFile - Perl library for reading and writing sound files
- Audio::Ao - A Perl wrapper for the Ao audio library
- MIDI::ALSA - the perl ALSA library, plus some interface functions
DSP
- Audio::Analyzer - Demodulate Audio through FFT and perl!
- Audio::Analyzer::ToneDetect - Detect freq of tones in an audio file or stream
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
Cryptography
- Bitcoin::Crypto - Bitcoin cryptography in Perl
- CryptX - Cryptographic toolkit
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::SerialPort - Generic Serial Port library for serial line communication
- Device::Modem - Talk to modem devices conneted via serial port
- Device::Onkyo - Control Onkyo/Integra AV equipment via LAN or Serial
- Chipcard::PCSC::Card - Control Smart card using perl and PCSC
- Device::XBee::API - Control XBee Device using pure perl code
- Device::Firmata - module for controlling Firmata devices like Arduino
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
DOM Manipulation
- HTML5::DOM - Super fast html5 DOM library with css selectors (based on Modest/MyHTML).
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::Tiny - Forms reusing Type::Tiny type constraints.
- 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
- GD - Interface to Gd Graphics Library
- Image::Info - Get image informations
- Image::PNG::Libpng - Perl interface for libpng
- Graphics::TIFF - Perl wrapper for libtiff
- Image::BMP - Perl bitmap image parser and viewer
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
Type checking
- MooseX::Types - Moose types management tool
- Type::Tiny - Tiny, yet comprehensive type library
Video
- FFmpeg - Interface to FFmpeg, a video converter written in C
- Video::Info - Retrieve video properties such as: height width codec fps
- Vlc::Engine - use Vlc media player with Perl
- VideoLAN::LibVLC - Perl bindings for libvlc.so
- Video::Generator - Perl class for video generation
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.
- Kelp - Plack-focused Perl web framework
- 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
- Web::Scraper
- WWW::Mechanize
- WWW::Mechanize::PhantomJS - automate the PhantomJS browser
- WWW::Scripter - For scripting web sites that have scripts
- WWW::Selenium
Network Security
Some great libraries for starting the world of Network security with Perl
- Net::Pcap - Interface to the pcap LBL packet capture library
- Net::Ncap - Perl binding to the ncap network data capture library
- Net::Frame - Perl framework for frame crafting
- NetPacket - assemble/disassemble network packets at the protocol level
- Net::Write - portable interface to open and send raw data to network
- Net::Analysis - Perl library for analysing network traffic
- Net::Silk - Perl's Interface to the SiLK network flow library
- Net::Inspect - Perl library for inspection of data on various network layers
- Net::Tshark - Perl interface for Tshark network capture utility
- Net::Sharktools - Wireshark's packet inspection capabilities in Perl
- File::PCAP - Read, Write and manipulate PCAP file format through Perl
- Net::P0f - Perl interface to p0f utility, usefull for finger-printing os
- Net::Pcap::Reassemble - Perl IP fragment reassembly for Net::Pcap
- Nagios::NRPE - Pure perl Nagios NRPE implementation
- Monitoring::Plugin - A family of perl modules to streamline writing Naemon, Nagios, Icinga or Shinken (and compatible) plugins
- Net::Connection::Sniffer - practical Perl library for MiTM connections
- Net::ARP - Library for crafting ARP packets
- SNMPMonitor - Perl extension for writing SNMP Monitors
- Net::LibNIDS - Perl interface for the Network Intrusion Detection System library
- Parse::Snort - Perl Snort rules parser
- Net::Wireless::802_11::WPA::CLI - Perl WPA_CLI interface
- IO::Socket::SSL::Intercept - library for intercepting SSL connections through Perl
Metadata Forensics
General Metadata files parser, usefull during forensics investigations
- Image::ExifTool - General metadata parser and viewer framework
Reverse Engineering
Libraries used for disassembly assembly operations, ELF files and bytecode
- Disassembly - Decompiles binary bytecode to readable and recompilable bytecode assembler
- Python::Bytecode - Parse Python bytecode
- B::Bytecode - Compiles a Perl script into a bytecode format that could be loaded later
- Perf::ARM - Use ARM instructions in Perl
- Asm::Z80::Table - assemble / disassemble all Z80 CPU assembly instructions with Perl
- X86::Disasm - Disassemble Intel x86 instructions with Perl
- Disassemble::X86 - Another library for disassembe X86 instructions
- X86::Udis86 - Interface for the C Udis disassembler
- Asm::X86 - List of instructions and registers of x86-compatible processors, validating and converting instructions and memory references
- ELF::Writer - write and read executable ELF files
Other Awesome Lists
Other amazingly awesome lists can be found in:
- bayandin/awesome-awesomeness
- emijrp/awesome-awesome
- fleveque/awesome-awesomes
- sindresorhus/awesome
- t3chnoboy/awesome-awesome-awesome
How to contribute?
Please read CONTRIBUTING.md