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.
Contents
Args
Libraries for argument manifestation and validation.
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
Benchmarks
Libraries for benchmarking
Caches
Libraries to talk to Cache Softwares
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
Cryptography
Commercial WebServices
Container
Libraries for Singleton Pattern implementation.
Libraries for serializing, formatting and parsing
Database
Libraries for dealing with relational databases
Database Drivers
Libraries for using specific database products
Relational Databases
NoSQL Databases
Date & Time
Libraries for working with dates and times
Devices
Libraries to talk to physical devices
Libraries that help when you want to deploy software across networks on several hosts/are working across computer networks
Email
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.
Libraries that take the boredom & repetition out of (web and UI) forms
Images
Libraries for manipulating images
List Manipulation
Libraries for manipulation lists (arrays)
Logging
Libraries for generating and working with log files
Module Development
Libraries that simplify and improve Perl module development
Network
Libraries that help when you are dealing with computer networks
Libraries that help when you are working across computer networks
ORM
Libraries that implement Object-Relational Mapping or datamapping techniques
Package Management
Libraries for package and dependency management
Processes and Threads
Libraries for managing processes and threads
Profiling
Libraries for examining run-time activity of your program
Protocol
Protocol clients and libraries
Queueing
Message Queue, Job Queue System..
Science/Numerics
Hand-picked modules for research, science, numerics and hyper-computing
Stream Manipulation
Libraries for manipulating event streams
REST Frameworks
Libraries for developing REST applications
Template Engines
Libraries and tools for templating
Testing
Libraries for testing codebases and generating test data.
Testing Frameworks
Test Double
Coverage
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
Libraries for handling configuration files
-
Config::Tiny - Read/Write .ini style files with as little code as possible
Type checking
Video
Web Frameworks
Libraries for developing Web applications
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
Network Security
Some great libraries for starting the world of Network security with Perl
General Metadata files parser, usefull during forensics investigations
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:
How to contribute?
Please read CONTRIBUTING.md