A curated list of awesome Perl frameworks, libraries, software and resources.
Perl is a highly capable, feature-rich programming language with over 30 years of development. Perl runs on over 100 platforms from portables to mainframes and is suitable for both rapid prototyping and large scale development projects.
- Web Frameworks
- Web Frameworks-Like
- Object Oriented Programming
- Database
- Database Drivers
- Date & Time
- Data Formats
- Development Tools
- Exception Handling
- File Manipulation
- Form Frameworks
- Image Processing
- List Manipulation
- Logging
- Module Development
- Network
- Package Management
- Processes & Threads
- Profiling
- Protocol
- Queueing
- REST Frameworks
- Science/Numerics
- Stream Manipulation
- Template Engines
- Testing
- Text Processing
- Tools
- Type Checking
- Video
- Web Crawling
- Web Frameworks
- Web Scraping
- Web Services
- Caching
- Configuration
- Cryptography
- GUI
- Asynchronous
- Command Line
- Benchmarking
- Security
- Performance
- Message Queue
- Authentication
- Authorization
- API Clients
- Serialization
- Machine Learning
- DevOps Tools
- Deployment
- Robotics
- Metadata
- Resources
Modern web frameworks for building web applications.
- Mojolicious - Real-time web framework with elegant and powerful syntax, WebSockets support, and non-blocking I/O.
- Dancer2 - Lightweight yet powerful web application framework inspired by Sinatra.
- Catalyst - MVC web framework with excellent plugin ecosystem and flexibility.
- Web::Simple - Minimalist web framework for building simple web applications.
- CGI::Application - Framework for building reusable web applications.
- Amon2 - Lightweight web application framework with DBI integration.
- Kelp - Light, modular web framework with Plack integration.
Lightweight frameworks and micro-frameworks.
- Aplaven - Micro web framework with Plack support.
- Poet - Modern Perl web framework with Mason templates.
- Raisin - REST API micro-framework for Perl.
Modern OOP systems for Perl.
- Moose - Complete modern object system with meta-object protocol, roles, and type constraints.
- Moo - Minimalist object orientation with Moose compatibility and better startup performance.
- Mouse - Lightweight Moose alternative with XS acceleration.
- Class::Tiny - Minimalist class builder with automatic accessor generation.
- Object::Pad - Experimental new object system for Perl 5 with native syntax.
- Class::Accessor - Automated accessor generation.
- Class::Accessor::Lite - Minimalist accessor generator.
- Class::InsideOut - Inside-out object implementation.
- Object::Tiny - Class builder with no dependencies.
- Role::Tiny - Minimal role composition.
Libraries for working with databases and ORMs.
- DBI - Database independent interface for Perl.
- DBIx::Class - Extensible and flexible ORM with advanced features.
- DBIx::Connector - Fast, safe DBI connection and transaction management.
- DBIx::Handler - Fork-safe and easy database handler.
- DBIx::Inspector - Get schema information from database.
- DBIx::QueryLog - Log queries for DBI.
- DBIx::Sunny - Useful DBI wrapper.
- DBIx::TransactionManager - Simple transaction manager.
- Teng - Lightweight and simple O/R Mapper.
- SQL::Maker - SQL builder with named placeholders.
- SQL::Abstract - Generate SQL from Perl data structures.
- SQL::Interp - Interpolate Perl variables into SQL statements.
Database-specific drivers and integrations.
- DBD::mysql - MySQL driver for DBI.
- DBD::Pg - PostgreSQL driver for DBI.
- DBD::SQLite - Self-contained SQLite database engine.
- DBD::Oracle - Oracle database driver.
- Mojo::Pg - PostgreSQL integration with non-blocking queries.
- Mojo::mysql - MySQL integration for Mojolicious.
- Redis - Perl binding for Redis database.
- Redis::Fast - Fast Redis client.
- MongoDB - Official MongoDB driver for Perl.
- UnQLite - Embedded NoSQL database.
- Mango - Non-blocking MongoDB driver.
- Cache::Memcached::Fast - Fast Memcached client.
Libraries for working with dates and times.
- DateTime - Comprehensive date and time object with timezone support.
- Time::Piece - Object-oriented time objects included with Perl.
- Time::Moment - High-performance immutable datetime objects.
- DateTime::Format::Strptime - Parse and format datetime strings.
- DateTime::Format::ISO8601 - Parse ISO8601 formatted dates.
- DateTime::Format::Natural - Parse natural language date/time strings.
- DateTime::TimeZone - Timezone support for DateTime.
- Time::Local - Efficiently compute time from local and GMT time.
- Date::Calc - Gregorian calendar date calculations.
- Date::Simple - Simple date objects.
Libraries for parsing and manipulating data formats.
- JSON::MaybeXS - Use the fastest available JSON implementation.
- JSON::XS - Fast JSON encoder/decoder.
- Cpanel::JSON::XS - JSON encoder/decoder with cPanel modifications.
- JSON::PP - Pure Perl JSON encoder/decoder.
- YAML::XS - Fast YAML parser and dumper.
- YAML::Tiny - Minimal YAML implementation.
- YAML - Pure Perl YAML implementation.
- XML::LibXML - Interface to libxml2 library for XML processing.
- XML::Simple - Simple API for reading and writing XML.
- XML::Twig - Process XML documents in tree mode.
- XML::Parser - Perl extension interface to James Clark's XML parser.
- Data::MessagePack - MessagePack serialization format.
- Text::CSV_XS - High-performance CSV parser.
- Text::CSV - Comma-separated values manipulator.
- TOML - Parser for Tom's Obvious Minimal Language.
- Config::Tiny - Read/write .ini style files.
- Data::Printer - Beautiful data structure dumper.
- Data::Dumper - Stringify Perl data structures.
Tools for Perl development.
- Perl::Critic - Critique Perl source code for best practices.
- Perl::Tidy - Perl source code formatter.
- Devel::REPL - Modern Perl interactive shell.
- Reply - Read-eval-print-loop with plugin support.
- Carton - Perl module dependency manager.
- cpanm - Get, unpack, build and install modules from CPAN.
- Perlbrew - Manage multiple Perl installations.
- plenv - Perl version manager.
- Smart::Comments - Comments that do more than just document.
- Data::Dump - Pretty printing of data structures.
Libraries for sending and parsing email.
- Email::Sender - Library for sending email via multiple transports.
- Email::MIME - Easy MIME message handling.
- Email::Valid - Check validity of email addresses.
- Email::Simple - Simple parsing of RFC2822 message format and headers.
- Email::Stuffer - Easy email creation and sending.
- Email::Address - Parse RFC 2822 email addresses.
- Mail::IMAPClient - IMAP client interface.
- MIME::Lite - Simple MIME email creation.
- Mail::Sendmail - Simple platform independent mailer.
Libraries for exception and error handling.
- Try::Tiny - Minimal try/catch with proper preservation of $@.
- TryCatch - First-class try/catch semantics.
- Exception::Class - Module for declaring exception hierarchies.
- Throwable - Role for classes that can be thrown.
- autodie - Replace functions with ones that succeed or die.
Libraries for file manipulation and MIME type detection.
- Path::Tiny - Simple object-oriented file path manipulation.
- Path::Class - Cross-platform path specification.
- File::Slurp - Simple and efficient file reading and writing.
- File::Slurper - Simple, sane and efficient module for file slurping and spurting.
- File::Find::Rule - Alternative interface to File::Find.
- File::HomeDir - Get home directory for any user.
- File::Temp - Create temporary files and directories.
- File::Which - Portable implementation of 'which'.
- File::Copy::Recursive - Recursive copy of files and directories.
- Archive::Extract - Generic archive extracting mechanism.
- Archive::Zip - Create, manipulate, read, and write Zip archives.
- Archive::Tar - Create and manipulate tar files.
- IO::All - Unified IO operations.
Libraries for form rendering and validation.
- HTML::FormHandler - Moose-based form handling with validation.
- Form::Tiny - Form validation framework with Moo.
- FormValidator::Simple - Simple validation library.
- Data::FormValidator - Profile-based validation.
Libraries for manipulating images.
- Image::Magick - ImageMagick bindings for Perl.
- GD - Interface to GD graphics library.
- Imager - Perl extension for image manipulation.
- Image::Info - Extract meta information from images.
- Image::ExifTool - Read and write meta information in image files.
Libraries for manipulating lists and arrays.
- List::Util - Selection of general utility list subroutines.
- List::MoreUtils - Provide the stuff missing in List::Util.
- List::AllUtils - Combination of List::Util and List::MoreUtils.
- List::UtilsBy - Higher-order list utility functions.
- Array::Utils - Small utils for array manipulation.
Libraries for generating and working with log files.
- Log::Log4perl - Log4j implementation for Perl.
- Log::Dispatch - Dispatches messages to multiple outputs.
- Log::Any - Logging abstraction layer for modules.
- Log::Minimal - Minimal and customizable logger.
- Mojo::Log - Simple logger for Mojolicious projects.
- Log::Contextual - Simple logging interface with context.
Libraries for module development and distribution.
- Dist::Zilla - Distribution builder with plugins.
- Minilla - CPAN module authoring tool.
- Module::Build - Build and install Perl modules.
- ExtUtils::MakeMaker - Create a Makefile for a Perl module.
- Module::Install - Standalone module installer.
- Module::Starter - Bootstrap a new module.
Libraries for network programming.
- IO::Socket::IP - IPv4/IPv6 socket interface.
- IO::Socket::SSL - SSL sockets with IO::Socket interface.
- Net::SSH::Perl - Pure Perl SSH client.
- Net::SSH2 - SSH2 protocol support via libssh2.
- Net::SFTP::Foreign - SFTP client for SSH2.
- Net::DNS - Perl interface to the DNS resolver.
- Net::Ping - Check remote host availability.
- NetAddr::IP - Manage IPv4 and IPv6 addresses.
Libraries for package management.
- cpanm - Get, unpack, build and install CPAN modules.
- CPAN - Query, download and build perl modules from CPAN.
- Carton - Perl module dependency manager using cpanfile.
- Pinto - Curate your own CPAN repository.
Libraries for managing processes and threads.
- Parallel::ForkManager - Simple parallel processing fork manager.
- Parallel::Prefork - Simple prefork server framework.
- Proclet - Minimalistic process manager.
- Proc::ProcessTable - Access process table information.
- threads - Perl interpreter-based threads.
Libraries for code profiling and performance analysis.
- Devel::NYTProf - Powerful feature-rich Perl profiler.
- Devel::Cover - Code coverage metrics for Perl.
- Benchmark - Benchmark running times of Perl code.
- Dumbbench - More reliable benchmarking with statistics.
Protocol clients and libraries.
- HTTP::Tiny - Minimal HTTP client.
- LWP::UserAgent - Full-featured HTTP client.
- LWP::Protocol::https - HTTPS support for LWP.
- Furl - Fast HTTP client.
- HTTP::Cookies - HTTP cookie jars.
- Net::HTTP - Low-level HTTP connection.
- Protocol::WebSocket - WebSocket protocol implementation.
Message queue and job queue systems.
- TheSchwartz - Reliable job queue.
- Qudo - Simple job queue manager.
- Minion - Job queue for Mojolicious.
- Gearman - Distributed job system.
Libraries for developing REST APIs.
- Dancer2::Plugin::REST - REST plugin for Dancer2.
- Catalyst::Action::REST - REST support for Catalyst.
- Raisin - REST API micro-framework.
- WebService::Async - Async REST client framework.
Libraries for scientific computing and numerical analysis.
- PDL - Perl Data Language for scientific computing.
- Math::BigInt - Arbitrary size integer math.
- Math::BigFloat - Arbitrary size floating point math.
- Math::Prime::Util - Prime number utilities.
- Statistics::Descriptive - Basic statistical functions.
- Math::Random - Random number generators.
- Chart::Clicker - Chart creation library.
Libraries for working with event streams.
- Stream::Buffered - Temporary buffer for reading stream.
- Data::Stream::Bulk - N-at-a-time iteration API.
Libraries for templating and lexing.
- Template Toolkit - Powerful and extensible template processing system.
- Text::Xslate - Fast template engine with multiple syntaxes.
- HTML::Template - Simple HTML templating system.
- Mason - Powerful template system with component-based architecture.
- Mojo::Template - Lightweight embedded Perl templates.
- Text::Template - Expand template text with embedded Perl.
- Template::Tiny - Template Toolkit reimplemented in minimal code.
Libraries for testing codebases and generating test data.
- Test::More - Basic testing framework included with Perl.
- Test2::Suite - Modern testing framework with rich feature set.
- Test::Simple - Basic utilities for writing tests.
- Test::Exception - Test exception-based code.
- Test::Fatal - Test for exceptions with better diagnostics.
- Test::Differences - Test strings and data structures for equality.
- Test::Deep - Extremely flexible deep comparison.
- Test::MockModule - Override subroutines in modules for testing.
- Test::MockObject - Emulate troublesome interfaces.
- Test::Mock::Guard - Simple mock test library.
- Test::Time - Override time for testing.
- Test::TCP - Testing TCP programs.
- Test::WWW::Mechanize - Test web applications.
- Test::Mojo - Testing toolkit for Mojolicious applications.
- Test::File - Test file attributes.
- Test::Class - Class-based testing.
- Test::Harness - Run Perl test scripts.
- Devel::Cover - Code coverage metrics for Perl.
Libraries for parsing and manipulating text.
- Regexp::Common - Collection of common regular expressions.
- Regexp::Assemble - Assemble multiple regexps into a single one.
- String::Util - String processing utilities.
- Text::Trim - Remove leading/trailing whitespace.
- Lingua::EN::Inflect - Convert singular to plural English words.
- Text::Diff - Perform diffs on files and strings.
- String::CamelCase - Convert to/from camel case.
- Text::Table - Organize data in tables.
- Text::Markdown - Convert Markdown to HTML.
- Text::Unidecode - Transliterate Unicode to ASCII.
- Unicode::UTF8 - Fast UTF-8 encoding/decoding.
Useful command-line tools.
- App::Ack - grep-like text finder optimized for programmers.
- App::perlbrew - Manage perl installations.
- App::cpanminus - Get, unpack, build and install modules.
- Perl::Tidy - Indent and reformat Perl scripts.
- Reply - Read-eval-print-loop shell.
Libraries for type checking and validation.
- Type::Tiny - Tiny yet comprehensive type library.
- Types::Standard - Type constraints based on Moose type system.
- MooseX::Types - Type library for Moose.
- Params::Validate - Validate method/function parameters.
- Params::ValidationCompiler - Build fast validators for parameters.
- Smart::Args - Smart argument validation.
Libraries for manipulating video.
- FFmpeg - Interface to FFmpeg video converter.
- Video::Info - Extract metadata from video files.
Libraries for crawling and spidering websites.
- WWW::Mechanize - Handy web browsing in a Perl object.
- WWW::Mechanize::Cached - Cache response of WWW::Mechanize.
- WWW::Selenium - Perl client for Selenium Remote Control.
Libraries for extracting data from websites.
- Web::Scraper - Web scraping toolkit using HTML and CSS selectors.
- Mojo::UserAgent - Non-blocking HTTP and WebSocket user agent.
- LWP::UserAgent - Web user agent class.
- HTML::TreeBuilder - Parser that builds HTML tree structures.
- HTML::TreeBuilder::XPath - Add XPath support to HTML::TreeBuilder.
- HTML::Query - jQuery-like DOM manipulation.
Libraries for working with web services.
- SOAP::Lite - SOAP client and server.
- XML::Compile::SOAP - SOAP 1.1 client and server.
- XML::RPC - Pure Perl XML-RPC implementation.
- Net::Amazon::S3 - Framework for accessing Amazon S3.
- WebService::Slack::WebApi - Slack Web API client.
Libraries for caching data.
- CHI - Unified cache interface.
- Cache::Cache - Cache interface.
- Cache::FastMmap - Shared memory cache.
- Cache::Memcached - Memcached client.
- Cache::Memcached::Fast - Fast Perl client for memcached.
Libraries for configuration files.
- Config::Tiny - Read/write .ini style files.
- Config::Any - Load configuration from many formats.
- Config::General - Apache-style config files.
- Config::GitLike - Git-style config files.
- Config::YAML - YAML-based configuration loader.
Libraries for encryption and cryptographic functions.
- Crypt::OpenSSL::RSA - RSA encoding and decoding.
- Crypt::OpenSSL::X509 - Parse X509 certificates.
- Crypt::JWT - JSON Web Token implementation.
- Digest::SHA - SHA cryptographic hash functions.
- Digest::MD5 - MD5 message digest algorithm.
- Crypt::Bcrypt - Modern password hashing for Perl.
- Crypt::Rijndael - AES encryption implementation.
- Crypt::CBC - Encrypt with cipher block chaining.
- Crypt::Random - Cryptographically strong random numbers.
Libraries for creating graphical user interfaces.
- Tk - Perl/Tk interface to Tk GUI toolkit.
- Wx - Perl interface to wxWidgets.
- Prima - Perl graphic toolkit.
- GTK2 - Perl bindings for GTK+ 2.x.
Libraries for asynchronous programming.
- IO::Async - Event-driven programming framework.
- AnyEvent - Event loop programming interface.
- POE - Portable multitasking and networking framework.
- Coro - Cooperative threads in Perl.
- Future - Represent operations awaiting completion.
- Promises - Promise/A+ implementation for Perl.
- Reflex - Reactive programming framework.
Libraries for building CLI applications.
- Getopt::Long - Extended processing of command line options.
- Getopt::Long::Descriptive - Getopt::Long with usage text.
- App::Cmd - Framework for building command-line applications.
- Term::ANSIColor - Color screen output using ANSI escape sequences.
- Term::UI - Term::ReadLine user interface.
- IO::Prompter - Prompt users for input with validation.
- Term::ProgressBar - Provide progress bars for long-running operations.
- Term::ReadKey - Simple terminal control.
- Term::ReadLine - Interface to readline libraries.
Libraries for benchmarking code.
- Benchmark - Benchmark running times of Perl code.
- Dumbbench - More reliable benchmarking with statistics.
- Benchmark::Dumb - Benchmark without the magic.
Libraries for security and cryptography.
- Net::SSLeay - Perl extension for using OpenSSL.
- Authen::SASL - SASL authentication framework.
- Authen::Passphrase - Hashed passwords/passphrases.
- Crypt::SaltedHash - Salted hash generation.
- Crypt::PBKDF2 - Password-based key derivation.
Libraries for improving performance.
- Devel::NYTProf - Powerful feature-rich Perl profiler.
- Sereal - Fast, compact, powerful binary serialization.
- Inline::C - Write Perl subroutines in C.
- Memoize - Transparently speed up functions.
- Class::XSAccessor - Generate fast XS accessors.
Message queue and broker systems.
- Net::RabbitMQ - RabbitMQ client library.
- Net::AMQP::RabbitMQ - RabbitMQ AMQP client.
- Net::Stomp - Streaming Text Orientated Messaging Protocol client.
- Net::Kafka - Apache Kafka client.
Libraries for implementing authentication.
- Authen::Simple - Simple authentication framework.
- Net::LDAP - LDAP client library.
- Authen::PAM - PAM authentication.
- Net::OAuth - OAuth protocol support.
- LWP::Authen::OAuth - OAuth support for LWP.
Libraries for implementing authorization.
- DBIx::Class::EncodedColumn - Automatically encode column values.
- Authorization::AccessControl - Access control lists.
Libraries for accessing third-party APIs.
- Net::Twitter - Twitter API client.
- Net::GitHub - GitHub API client.
- WebService::DigitalOcean - DigitalOcean API.
- Paws - Perl AWS SDK.
- Net::Google::Drive::Simple - Google Drive API client.
- WWW::Twilio::API - Twilio API client.
Libraries for serializing data.
- Storable - Persistence for Perl data structures.
- Sereal - Fast binary serialization.
- Data::MessagePack - MessagePack implementation.
- FreezeThaw - Convert Perl structures to strings.
- CBOR::XS - Concise Binary Object Representation.
Libraries for machine learning and AI.
- AI::MXNet - Perl interface to Apache MXNet.
- Algorithm::NaiveBayes - Naive Bayes classifier.
- AI::DecisionTree - Decision tree learning.
- AI::NeuralNet::BackProp - Backpropagation neural network.
- Algorithm::SVM - Support Vector Machines.
Tools for deployment and system administration.
- Rex - Remote execution framework.
- App::Sqitch - Database change management.
- IPC::Run - Run commands with piping and redirection.
- Sys::Info - Get system information.
- Sys::Hostname - Get hostname.
Tools for deploying applications.
- Plack - PSGI toolkit and server adapters.
- Starman - High-performance preforking PSGI server.
- Starlet - Simple, high-performance PSGI server.
- Gazelle - Preforked Plack handler for performance.
- Server::Starter - Superdaemon for hot-deploying servers.
Libraries for robotics.
- Device::SerialPort - Serial port communication.
- UAV::Pilot - Control drones and UAVs.
Libraries for handling metadata.
- Software::License - Software license objects.
- CPAN::Meta - Distribution metadata.
- Module::Metadata - Gather package and POD information from modules.
Where to discover new Perl libraries and resources.
- MetaCPAN - Search and browse CPAN modules with documentation.
- Perl.org - Official Perl website with downloads and documentation.
- PerlMonks - Community discussion forum for Perl programmers.
- Perl Weekly - Weekly newsletter about Perl.
- blogs.perl.org - Perl blogging community.
- Perl Maven - Tutorials, articles, and screencasts.
- Perl.com - Articles and news about Perl.
- Modern Perl - Free book covering modern Perl practices.
- Learning Perl - Classic introduction to Perl (The Llama Book).
- Programming Perl - The definitive Perl reference (The Camel Book).
- Intermediate Perl - Beyond the basics of Perl.
- Mastering Perl - Advanced Perl programming techniques.
- Higher-Order Perl - Advanced functional programming techniques (free online).
- Perl Best Practices - Best practices for Perl programming.
- Object Oriented Perl - Object-oriented programming in Perl.
- Perl Tutorial - Official Perl introduction.
- Learn Perl - Comprehensive learning resources.
- Perl Maven - Tutorials and articles for all levels.
- PerlDoc - Official Perl documentation.
- Exercism Perl Track - Practice Perl with exercises.
- Reddit /r/perl - Perl subreddit with discussions and news.
- Perl Monks - Perl community Q&A and discussion site.
- IRC #perl - Perl IRC channels on various networks.
- Perl on Stack Overflow - Q&A for Perl.
- The Perl Foundation - Dedicated to advancing Perl.
- The Perl Conference - Annual Perl conference in North America.
- YAPC (Yet Another Perl Conference) - Regional Perl conferences worldwide.
- London Perl Workshop - Annual London event.
- German Perl Workshop - German Perl community event.
- YAPC NA Videos - Conference talks on YouTube.
- Perl YouTube Channels - Various Perl tutorials.
- Awesome Mojolicious - Projects using Mojolicious.
- Awesome CPAN - Another curated list of Perl resources.
- Task::Kensho - Glimpse of enlightenment - recommended modules.
Your contributions are always welcome! Please read the contribution guidelines first.
- Search previous suggestions before making a new one.
- Make an individual pull request for each suggestion.
- Use the following format:
**[Name](link)** - Description. - New categories or improvements to existing categorization are welcome.
- Keep descriptions short and simple, but descriptive.
- Check your spelling and grammar.
- Make sure your text editor is set to remove trailing whitespace.
Thank you for your suggestions!
To the extent possible under law, the contributors have waived all copyright and related rights to this work.
