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 to 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.
Table of Contents
Jiffy is a 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.
The 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.
Gantry is a mature web application framework, runs on anything that runs Perl. The Object-oriented design allows for a pragmatic, modular approach to URL dispatching.
It features a standalone server for rapid development, plugin architecture, flexible templating system, built-in CRUD operation, user authentication, session, form generation and validation, database and SQL utilities, and much more.
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 into different objects (for example, creating an MVC application).
DBUnit is the database testing framework that covers both black box and white box testing. Black box testing allows you to verify your database match expected values. This dataset comes from tables, views, or stored functions/procedures.
On the other hand, white box testing focuses on the existing database schema elements such as procedure, functions, indexes, tables, columns, constraints, etc. You can test particular characteristics (like default value, type, exception, etc.) of those objects.
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.
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 a few CPAN modules for logging, caching, and configuration. It also allows you to access common objects and utilities from anywhere in your app.
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 top of the 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.
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.
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.
Maypole is similar to Java’s struts. Since this web application framework is fully abstracted, it doesn’t know anything about how to talk to the outside world.
It is based on Model-View-Controller, a design method where every crucial aspect of the application’s operation is handled by a totally separate system. It comes with an extensive document that provides a wide range of cookbook-like techniques, which explain what exactly can be done with Maypole processes.
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 plugin/add-ons for CGI::Application, including plugins for caching, sessions, debugging, logging, HTML validation, and more.
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.
Dancer is a 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 a compliant PSGI server, including Mongrel 2 and Plack.
Catalyst is the most popular Perl MVC framework that makes developing web applications fun, rewarding, and quick. The apps built on Catalyst are robust and scalable with no complicated object hierarchies.
It provides an 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.
Task-Kensho is a list of recommended modules for Enlightened Perl development. They are all taken from different modules lists and discussions 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.