mod_perl2 User's Guide
By Stas Bekman, Jim Brandt
By Stas Bekman, Eric Cholet
There are several application servers and toolkits available designed to run under mod_perl, which might provide you with inline-Perl coding, or MVC (Model/View/Controller) frameworks.
You probably want to look at Choosing a Templating system for more information and in-depth analysis of some of the ones listed here.
The following frameworks are sorted alphabetically.
Apache::ASP (http://www.apache-asp.org/) provides an Active Server
Pages port to the Apache Web Server with Perl scripting only, and
enables developing of dynamic web applications with session management
and embedded perl code. There are also many powerful extensions,
including XML taglibs, XSLT rendering, and new events not originally
part of the ASP API
Apache::PageKit (http://pagekit.org/) is a web application
framework that uses
HTML::Template and XML to separate the Model,
View, Content and Controller. Provides elegant solutions to many
difficult web programming problems, including session management,
language localization, authentication, form validation, and
AxKit (http://axkit.org/) is an XML Application Server for
Apache. It provides on-the-fly conversion from XML to any format, such
as HTML, WAP or text using either W3C standard techniques, or flexible
AxKit also uses a built-in Perl interpreter to provide
some amazingly powerful techniques for XML transformation.
The bivio OLTP Platform (http://www.bivio.biz/hm/why-bOP) (bOP) is a declarative, multi-layered Perl application development framework. Adapters have been written for Apache/mod_perl, sendmail, Oracle, and PostgreSQL. The Model layer generates SQL for CRUD, lists, and HTTP forms. Views are content-independent hierarchies of widgets. Tasks control security, execution order, and state transitions. Facades map qualified names to URLs, strings, fonts, colors, icons, files, and views. bOP provides a full-suite of services including dynamic tracing, configuration, logging, class loading, type hierarchy, unit testing, and acceptance testing.
Catalyst is an elegant web application framework, extremely flexible yet extremely simple. It's similar to Ruby on Rails, Spring (Java), and Maypole, upon which it was originally based. Its most important design philosophy is to provide easy access to all the tools you need to develop web applications, with few restrictions on how you need to use these tools. However, this does mean that it is always possible to do things in a different way. Other web frameworks are initially simpler to use, but achieve this by locking the programmer into a single set of tools. Catalyst's emphasis on flexibility means that you have to think more to use it. We view this as a feature. For example, this leads to Catalyst being more suited to system integration tasks than other web frameworks.
Main site page http://catalyst.perl.org/wiki
CGI::Application is intended to make it easier to create
sophisticated, reusable web-based applications. This module implements
a methodology which, if followed, will make your web software easier
to design, easier to document, easier to write, and easier to evolve.
CGI::Application builds on standard, non-proprietary technologies
and techniques, such as the Common Gateway Interface and Lincoln
D. Stein's excellent
avoids employing technologies and techniques which would bind a
developer to any one set of tools, operating system or web server.
There's a good article on perl.com about this framework http://www.perl.com/pub/a/2001/06/05/cgi.html.
DataBreeze is written entirely in Perl and utilizes mod_perl within Apache to speed performance. Feedback from the Perl/mod_perl/Apache community is important. You may download the software for evaluation at http://www.databreeze.com or simply logon and try DataBreeze directly online.
DataBreeze is very different from typical development tools because it utilizes a pre-built application framework that requires no programming. DataBreeze provides a template environment for building database applications that list, search, explore and edit relational data. The system includes integrated menus, forms, tree-views, security, session/state management and more, all in a Web Browser. DataBreeze can also be extended through the use of Event programs using Perl.
This is not free software but nothing is hidden, the complete Perl source code is included so that you may explore how it works.
Embperl (http://perl.apache.org/embperl/) is a system for building
dynamic websites with Perl. It gives you the power to embed Perl code
in your HTML documents and the ability to build your Web site out of
small reusable objects in an object-oriented style. You can also take
advantage of all the usual Perl modules, (including
database access) use their functionality and easily include their
output in your web pages. Embperl has several features which are
especially useful for creating HTML, including dynamic tables, form
field processing, URL escaping/unescaping, session handling, and more.
Gantry (http://www.usegantry.org) is a web application framework for
Apache/mod_perl, CGI and Fast-CGI. Gantry's object oriented design allows
for a pragmatic, modular approach to URL dispatching. Gantry supports MVC
and initiates rapid development, offering an organized coding scheme for
It can take advantage of its sister project
Bigtop, which allows
you to describe the data of your application and have it generate
or regenerate your database schema and module objects without destroying
the portions you have customized.
Gantry also has a robust configuration abstraction layer
that allows you to change how your application retrieves its configuration
data without requiring any code changes.
Interchange (http://www.icdevgroup.org/) is a flexible, high
performance application server that handles state management,
authentication, session maintenance, click trails, filtering, URL
encodings, security policy. It's made up of the following components:
database abstraction layer, generic templating system, transaction
routing rules, customer information object, universal localization
scheme, security blackout definition, profiles, filters, search
language, and session management.
Some of Interchange's many modules are transaction management, pricing, personalization, payment processing, reporting, customer service, and search.
Mason (http://www.masonhq.com/) is a powerful Perl-based web site
development and delivery engine. With
Mason you can embed Perl
code in your HTML and construct pages from shared, reusable
Mason solves the common problems of site development:
caching, debugging, templating, simulating browser conditions,
maintaining development and production sites, and more
Maypole is a Perl framework for MVC-oriented web applications, similar to Jakarta's Struts. Maypole is designed to minimize coding requirements for creating simple web interfaces to databases, while remaining flexible enough to support enterprise web applications.
OpenInteract (http://www.openinteract.org/) is a web application
environment written in perl and geared to run on the Apache web server
using the mod_perl plugin module. The environment is built to be not
only friendly to people editing and changing a website's content, but
also for the developers who can write code (or complex templates) and
create entire applications.
OpenFrame (http://openframe.fotango.com/) is an open source
application framework for distributed media applications. What all
this buzzword-compliant mumbo-jumbo really means is that with
OpenFrame you can write a single application for multiple downstream
clients (ie, Web, WAP, iDTV, Email) and not have to worry about much
except the presentation.
PLP (http://plp.juerd.nl/) is yet another Perl embedder, primarily for HTML documents. Unlike with other Perl embedders, there is no need to learn a meta-syntax or object model: one can just use the normal Perl constructs. PLP runs under mod_perl for speeds comparable to those of PHP, but can also be run as a CGI script.
The Template Toolkit (http://template-toolkit.org/) is a fast,
powerful and easily extensible template processing system written in
Perl. It is ideally suited (but not limited) to the creation of static
and dynamic web content. The
Apache::Template module provides an
Apache/mod_perl interface to the Template Toolkit, providing a quick
and simple way to integrate its processing power into your web site.
Uttu (http://uttu.tamu.edu/) is a web-application driver that
provides support for writing application frameworks. This support
includes configuration, database connectivity, caching,
uri-to-filename translation, and application installation. Uttu makes
working with multiple virtual hosts and
AxKit almost trivial.