← Back to Awesome

Sections

Perl

GitHub repository ↗ synced 2026/8/9

Awesome Perl Awesome

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

- [Args](#args)
- [Audio](#audio)
    - [Digital Signal Processing](#DSP)
- [Benchmarks](#benchmarks)
- [Caches](#caches)
- [Class Builder](#class-builder)
- [CLI](#cli)
- [Cloud](#cloud)
- [Cryptography](#cryptography)
- [Commercial WebServices](#commercial-webservices)
- [Container](#container)
- [Data Format](#data-format)
- [Database](#database)
- [Database Drivers](#database-drivers)
    - [Relational Databases](#relational-databases)
    - [NoSQL Databases](#nosql-databases)
- [Date & Time](#date--time)
- [Devices](#devices)
- [DevOps](#devops-tools)
- [Email](#email)
- [Event Loops](#event-loops)
- [Exception Handling](#exception-handling)
- [DOM Manipulation](#dom-manipulation)
- [File Manipulation](#file-manipulation)
- [Form Frameworks](#form-frameworks)
- [Images](#images)
- [List Manipulation](#list-manipulation)
- [Logging](#logging)
- [Module Development](#module-development)
- [Network](#network)
- [ORM](#orm)
- [Package Management](#package-management)
- [Processes and Threads](#processes-and-threads)
- [Profiling](#profiling)
- [Protocol](#protocol)
- [Queueing](#queueing)
- [REST Frameworks](#rest-frameworks)
- [Science/Numerics](#sciencenumerics)
- [Stream Manipulation](#stream-manipulation)
- [Template Engines](#template-engines)
- [Testing](#testing)
    - [Testing Frameworks](#testing-frameworks)
    - [Test Double](#test-double)
    - [Coverage](#coverage)
- [Tools](#tools)
- [Type Checking](#type-checking)
- [Video](#video)
- [Web Frameworks](#web-frameworks)
    - [Middlewares](#middlewares)
- [Web Frameworks-Like](#web-frameworks-like)
- [Web Scraping](#web-scraping)
- [Network Security](#Network-Security)
- [Digital Forensics](#Metadata-Forensics)
- [Reverse Engineering](#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.

  • Object::Container

Data Format

Libraries for serializing, formatting and parsing

  • BSON - Binary JSON format
  • CBOR::Free - Support for CBOR, 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::MariaDB - MariaDB and MySQL driver for the Perl5 Database Interface (DBI)
  • 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

  • DateTime
  • Time::Moment
  • Time::Piece

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

Email

Libraries that implement email creation and sending

  • Email::Sender
  • Email::Reply
  • Email::Stuffer

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

  • Log::Dispatch
  • Log::Log4perl
  • Log::Minimal

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

  • DBIx::Class
  • Rose::DB
  • Teng

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