15+ Perl Frameworks You Should Be Using | 2019 Edition

January 3, 20196 min read

Perl (Practical Extension and Reporting Language) is a high-level, general purpose dynamic programming language. It was developed in 1987 as a general purpose Unix scripting language to make report processing faster and easier. Since then, it has undergone numerous changes.
Perl borrows features from other programming languages including shell scripting, sed and C. Nowadays, it is mainly used for system administration, graphics programming, bioinformatics, network programming and other applications. Also, it is referred as duct tape that holds the internet together.

There are many frameworks and libraries that have been designed to make your task a little bit easier. If you are planning to do your next project in Perl, you should consider the listed frameworks.

15. Jifty

Jiffy is full-stack web application framework for Perl. To build some website with Jifty, you need to create an application and for each application you may use a different server that drives the application’s pages. The logic behind your app is encapsulated in action classes. Application uses a config file, etc/config.yml to control its operation. The framework uses HTML::Mason as the templating engine to render its templates.

13. Embperl

Embperl is a framework for building small sites. It delivers many features that ease the task of creating websites, including formfield processing, escaping/unescaping, dynamic tables, caching, session handling and more. If demand grows, you can make your website object-oriented and build it out of small reusable components. The framework supports separating small modules in different objects (for example, creating an MVC application).

11. HTTP::Engine

HTTP::Engine is a micro web application framework that abstracts handling the input and output of different web server environments, including mod_perl, CGI and FastCGI. Most of its code is taken from Catalyst::Engine. It prepares the object (HTTP::Engine::Request) and passes it to the request handler. The request handler then returns another object (HTTP::Engine::Response), which communicates back to the server.
These objects cover the bases of common request process tasks such as processing file uploads, parsing HTTP cookies, handling GET and POST parameters etc.

10. Interchange

Interchange is an open source e-commerce web application server and platform. It is primarily used for developing customized e-commerce and catalog solutions. It plays nicely with all other things that your marketing, operations, logistics and vendor management groups want to bolt onto it. Furthermore, it performs well under screaming loads, as well as hold stable under the day-in-day-out slog of data.

9 & 8. Mason + Poet

Mason is a powerful templating system for creating HTML or other dynamic content. It has powered thousands of websites including Amazon and Salon.com. You can also use it as a templating layer for other Perl web frameworks like Dancer and Catalyst. The general style of Mason is similar to PHP and StoryServer.

Poet is a modern companion framework for Mason. It uses Plack server integration and selection of few CPAN modules for logging, caching and configuration. It also allows you to access common objects and utilities from anywhere in your app.

7. Moose

Moose is an extension of the object system, which takes the tedium out of writing object-oriented Perl. With Moose you can think more about what you want to do and less about the mechanics of OOP. It is built on the top of MetaObject protocol (MOP) and provides complete introspection for all Moose-using classes. Moose borrows some of the best features from Perl 5, Smalltalk, BETA, Ocaml, Java, Ruby, Lisp and more.

6. Test::More

Test::More is the baseline unit testing module for Perl. It is not a complete testing framework, however, programs written in with Test::More output their results as TAP which can be interpreted by a human or run through a TAP parser (like Test::Harness). Moreover, the output can be stored and reinterpreted later.

5. TAP

TAP (Test Anything Protocol) allows you to communicate between unit tests and a test harness. It is originally built for unit testing of the Perl interpreter. TAP allows individual tests to communicate test results to the testing harness in a language-agnostic way.

4. CGI::Application

CGI::Application is a lightweight, flexible MVC framework for developing web applications. You can use any template system with its standard interface, however, it returns the output after the page is built. There are a number of modules on CPAN that have been developed to work as a plugin/add-ons for CGI::Application including plugins for caching, sessions, debugging, logging, HTML validation and more.

3. Mojolicious

Mojolicious is a real time web application framework for Perl. It is designed for both simple and complex applications. It supports RESTful routes, plugins, testing framework, session management, static file server, signed cookies and Perl-ish templates. You can directly install it from CPAN. Pre-built packages for this framework are also available for NetBSD, Microsoft Windows and other operating systems.

2. Dancer

Dancer is simple, flexible and powerful web application framework for Perl. It has intuitive and very expressive syntax. It depends on as few CPAN modules as possible, making it easy to install. Dancer is packed with a standalone development server which can be used for developing and testing apps. It also supports PSGI specification and therefore can run on compliant PSGI server including Mongrel 2 and Plack.

1. Catalyst

Catalyst is the most popular Perl MVC framework that makes developing web application fun, rewarding and quick. The apps built on Catalyst are robust and scalable with no complicated object hierarchies. It provides interface to web servers and receiving page requests, dispatching these into developer written code in order to process and return the request. Magazines.com, Booking.com, bbc.co.uk are some popular websites powered by Catalyst.
The framework is distributed through CPAN, the official distribution channel for Perl applications and libraries.

Bonus: Task-Kensho

Task-Kensho is a list of recommended modules for Enlightened Perl development. They are all taken from different modules lists and discussion, and broken down into several categories. Task-Kensho split its groups of modules into individually installable tasks, so you can install each task separately according to your need.