Mojolicious::Guides(3) The Mojolicious Guide to the Galaxy


We are constantly working on new documentation. Follow us on GitHub <> or join the official IRC channel "#mojo" on "" to get all the latest updates.


Learning Perl
If you are new to Perl, we recommend Learn Perl in 2 hours 30 minutes <> for a quick introduction, or the Modern Perl book <>, freely available in many formats. Both are excellent introductions to the language. For more books and documentation, check out <>.
Learning Web Technologies
All web development starts with HTML, CSS and JavaScript, to learn the basics we recommend the Mozilla Developer Network <>. And if you want to know more about how browsers and web servers actually communicate, there's also a very nice introduction to HTTP <>.


Modern Perl
Mojolicious uses a modern subset of Perl exclusively, and therefore all documentation assumes that strict, warnings, utf8 and Perl 5.10 features are enabled, even if examples don't specifically mention it.

  use strict;
  use warnings;
  use utf8;
  use feature ':5.10';

Some modules, like Mojo::Base and Mojolicious::Lite, will enable them for you automatically, whenever they are used.


A fast and fun way to get started developing web applications with Mojolicious. The tutorial introduces the Mojolicious::Lite micro web framework, which is only a thin wrapper around the full web framework. The simplified notation introduced in the tutorial is commonly used throughout the guides and is therefore considered a prerequisite, you should definitely take a look!


Starting a Mojolicious::Lite prototype from scratch and growing it into a well-structured Mojolicious application.
Simple and fun introduction to the Mojolicious router.
Generating content with the Mojolicious renderer.
Cooking with Mojolicious, recipes for every taste.
Become a part of the ongoing Mojolicious development.
Answers to the most frequently asked questions.


Mojolicious and Mojolicious::Lite are the sum of many parts, built on top of the Mojo web development toolkit. Small building blocks that can be used independently for all kinds of applications, these are the most prominent ones.
Full featured non-blocking I/O HTTP and WebSocket user agent.
Very fun and minimalistic HTML/XML DOM parser with CSS selector support.
Minimalistic JSON implementation that just works.
Full featured, highly portable non-blocking I/O HTTP and WebSocket server, with self-restart support through Mojo::Server::Morbo, perfect for development and testing.
Full featured, UNIX optimized, preforking non-blocking I/O HTTP and WebSocket server with support for zero downtime software upgrades (hot deployment) through Mojo::Server::Hypnotoad.
Mojo::Server::CGI, Mojo::Server::PSGI
Transparent CGI and PSGI support out of the box.
A minimalistic event loop with support for multiple reactor backends.
Very Perl-ish and minimalistic template system.
Testing toolkit for web applications.
Fun one-liners using everything above.


These modules are not part of the Mojolicious distribution, but have been designed to be used with it and are being developed under the same umbrella.
A tiny wrapper around DBD::Pg that makes PostgreSQL <> a lot of fun to use with Mojolicious.
A job queue for Mojolicious with support for multiple backends.


This is the class hierarchy of the Mojolicious distribution.
  • Mojo::Base
  • Mojo
  • Mojolicious
  • Mojolicious::Lite
  • Mojo::HelloWorld
  • Mojo::Cache
  • Mojo::Cookie
  • Mojo::Cookie::Request
  • Mojo::Cookie::Response
  • Mojo::DOM::CSS
  • Mojo::DOM::HTML
  • Mojo::Date
  • Mojo::EventEmitter
  • Mojo::Asset
  • Mojo::Asset::File
  • Mojo::Asset::Memory
  • Mojo::Content
  • Mojo::Content::MultiPart
  • Mojo::Content::Single
  • Mojo::IOLoop
  • Mojo::IOLoop::Client
  • Mojo::IOLoop::Delay
  • Mojo::IOLoop::Server
  • Mojo::IOLoop::Stream
  • Mojo::Log
  • Mojo::Message
  • Mojo::Message::Request
  • Mojo::Message::Response
  • Mojo::Reactor
  • Mojo::Reactor::Poll
  • Mojo::Reactor::EV
  • Mojo::Server
  • Mojo::Server::CGI
  • Mojo::Server::Daemon
  • Mojo::Server::Prefork
  • Mojo::Server::PSGI
  • Mojo::Transaction
  • Mojo::Transaction::HTTP
  • Mojo::Transaction::WebSocket
  • Mojo::UserAgent
  • Mojolicious::Plugins
  • Mojo::Exception
  • Mojo::Headers
  • Mojo::Home
  • Mojo::JSON::Pointer
  • Mojo::Parameters
  • Mojo::Path
  • Mojo::Server::Hypnotoad
  • Mojo::Server::Morbo
  • Mojo::Template
  • Mojo::URL
  • Mojo::Upload
  • Mojo::UserAgent::CookieJar
  • Mojo::UserAgent::Proxy
  • Mojo::UserAgent::Server
  • Mojo::UserAgent::Transactor
  • Mojolicious::Command
  • Mojolicious::Command::cgi
  • Mojolicious::Command::cpanify
  • Mojolicious::Command::daemon
  • Mojolicious::Command::eval
  • Mojolicious::Command::generate::app
  • Mojolicious::Command::generate::lite_app
  • Mojolicious::Command::generate::makefile
  • Mojolicious::Command::generate::plugin
  • Mojolicious::Command::get
  • Mojolicious::Command::inflate
  • Mojolicious::Command::prefork
  • Mojolicious::Command::psgi
  • Mojolicious::Command::routes
  • Mojolicious::Command::test
  • Mojolicious::Command::version
  • Mojolicious::Commands
  • Mojolicious::Command::generate
  • Mojolicious::Controller
  • Mojolicious::Plugin
  • Mojolicious::Plugin::Charset
  • Mojolicious::Plugin::Config
  • Mojolicious::Plugin::JSONConfig
  • Mojolicious::Plugin::DefaultHelpers
  • Mojolicious::Plugin::EPLRenderer
  • Mojolicious::Plugin::EPRenderer
  • Mojolicious::Plugin::HeaderCondition
  • Mojolicious::Plugin::Mount
  • Mojolicious::Plugin::PODRenderer
  • Mojolicious::Plugin::TagHelpers
  • Mojolicious::Renderer
  • Mojolicious::Routes::Match
  • Mojolicious::Routes::Pattern
  • Mojolicious::Routes::Route
  • Mojolicious::Routes
  • Mojolicious::Sessions
  • Mojolicious::Static
  • Mojolicious::Types
  • Mojolicious::Validator
  • Mojolicious::Validator::Validation
  • Test::Mojo
  • Mojo::ByteStream
  • Mojo::Collection
  • Mojo::DOM
  • Mojo::JSON
  • Mojo::Loader
  • Mojo::Util
  • Mojo::WebSocket
  • ojo


A lot more documentation and examples by many different authors can be found in the Mojolicious wiki <>.


If you have any questions the documentation might not yet answer, don't hesitate to ask on the mailing-list <> or the official IRC channel "#mojo" on "".