1. Mojolicious
If you're starting a new Perl project today, Mojolicious is likely your best bet. It's a real-time web framework designed for both simple and complex applications. Mojolicious comes with a powerful, non-blocking I/O web server and supports WebSockets
out of the box, making it perfect for highly scalable services. Its 'Lite' version allows you to start with a single file and grow into a full Model-View-Controller (MVC) structure as your project expands. With minimal dependencies and a philosophy of making simple tasks easy and hard tasks possible, it has become the go-to choice for modern Perl web development.
2. Dancer2
Inspired by Ruby's Sinatra framework, Dancer2 is a lightweight and expressive micro-framework. Its focus is on simplicity and a 'just works' philosophy, with a syntax that's easy to learn. While the core is minimal, Dancer2 is highly extensible through a vast ecosystem of plugins on CPAN for everything from database integration to session management. It's PSGI-compliant, meaning it can run on various servers like Plack. A complete rewrite of the original Dancer, Dancer2 is built on a more modern object system (Moo) and represents a solid foundation for building everything from simple APIs to more complex sites.
3. Catalyst
Catalyst is the seasoned veteran of Perl frameworks. It’s a powerful, flexible, and mature MVC framework designed for large-scale applications. Big names like Booking.com have relied on it. Catalyst follows the 'Don't Repeat Yourself' (DRY) principle and excels at separating concerns: models handle data, views handle presentation, and controllers manage application flow. It’s not prescriptive about which modules you use for your models or views, offering flexibility with popular choices like DBIx::Class for the database and Template Toolkit for views. While it has a steeper learning curve than micro-frameworks, its robustness is unmatched for complex projects.
4. Kelp
Kelp is a lean, Plack-centric web framework that aims for simplicity and speed. Unlike frameworks that come with their own deployment code, Kelp is built directly on top of Plack, the standard for Perl web deployment. This tight integration results in less friction and faster performance. Kelp's design is minimalist and modular, avoiding bloat by not including features you might not need. It’s a great choice for developers who are already comfortable in the Plack ecosystem and want a framework that feels like a natural extension of it, allowing for clean, maintainable code without unnecessary overhead.
5. Plack
While not a framework in the same vein as Catalyst or Mojolicious, Plack is an essential tool in any modern Perl developer's toolkit. It’s a set of tools for PSGI (Perl Web Server Gateway Interface), which provides a standard interface between Perl web applications and web servers. Think of it as the fundamental layer that most modern Perl frameworks (like Dancer2 and Kelp) are built upon. By writing your application to the PSGI spec, you can deploy it anywhere that supports Plack, from a development server on your laptop to a high-performance production server like Starman or Twiggy.
6. Web::Simple
As the name implies, Web::Simple is a minimalist framework for building small, straightforward web applications. Created by a key developer from the Catalyst and DBIx::Class projects, its philosophy is to keep everything to a bare minimum. It's not intended for large, complex sites but is perfect for rapid prototyping, creating a simple API, or building a small utility tool. It's a great way to get a web-based task done quickly without the overhead of a full-featured framework, providing just enough structure to get the job done cleanly.
7. Moose
Moose isn't a web framework, but it's a framework that pairs incredibly well with Perl, especially when building web applications. It’s a modern object system for Perl 5 that extends the language's built-in object-oriented capabilities. Moose simplifies OO Perl by providing a declarative syntax for creating classes with attributes, roles, and type constraints, taking the tedium out of boilerplate code. Many modern frameworks, like Catalyst, are built on Moose, leveraging its power to create extensible and maintainable systems. Using Moose directly in your application logic, even within a micro-framework, can lead to cleaner, more robust, and more testable code.













