=head1 NAME Catalyst::Manual::Tutorial - Getting started with Catalyst =head1 DESCRIPTION This document aims to get you up and running with Catalyst. NOTE: THIS DOCUMENT IS STILL VERY MUCH IN AN EARLY DRAFT STATE. SEE THE NOTES AT THE BOTTOM OF THE DOCUMENT. =head2 Installation The first step is to install Catalyst, and the simplest way to do this is to install the Catalyst bundle from CPAN: $ perl -MCPAN -e 'install Bundle::Catalyst' This will retrieve Catalyst and a number of useful extensions and install them for you. =head2 Setting up your application Catalyst includes a helper script, C, that will set up a skeleton application for you: $ catalyst MyApp created "MyApp" created "MyApp/script" created "MyApp/lib" created "MyApp/root" created "MyApp/root/static" created "MyApp/root/static/images" created "MyApp/t" created "MyApp/t/Model" created "MyApp/t/View" created "MyApp/t/Controller" created "MyApp/lib/MyApp" created "MyApp/lib/MyApp/Model" created "MyApp/lib/MyApp/View" created "MyApp/lib/MyApp/Controller" created "MyApp/lib/MyApp.pm" created "MyApp/Build.PL" created "MyApp/Makefile.PL" created "MyApp/README" created "MyApp/Changes" created "MyApp/t/01app.t" created "MyApp/t/02pod.t" created "MyApp/t/03podcoverage.t" created "MyApp/root/static/images/catalyst_logo.png" created "MyApp/root/static/images/btn_120x50_built.png" created "MyApp/root/static/images/btn_120x50_built_shadow.png" created "MyApp/root/static/images/btn_120x50_powered.png" created "MyApp/root/static/images/btn_120x50_powered_shadow.png" created "MyApp/root/static/images/btn_88x31_built.png" created "MyApp/root/static/images/btn_88x31_built_shadow.png" created "MyApp/root/static/images/btn_88x31_powered.png" created "MyApp/root/static/images/btn_88x31_powered_shadow.png" created "MyApp/root/favicon.ico" created "MyApp/script/myapp_cgi.pl" created "MyApp/script/myapp_fastcgi.pl" created "MyApp/script/myapp_server.pl" created "MyApp/script/myapp_test.pl" created "MyApp/script/myapp_create.pl" This creates the directory structure shown, populated with skeleton files. =head2 Testing out the sample application You can test out your new application by running the server script that Catalyst provides: $ cd MyApp $ script/myapp_server.pl [...] [catalyst] [debug] Debug messages enabled [...] [catalyst] [debug] Loaded plugins: .------------------------------------------------------------------------------. | Catalyst::Plugin::Static::Simple | '------------------------------------------------------------------------------' [...] [catalyst] [debug] Loaded dispatcher "Catalyst::Dispatcher" [...] [catalyst] [debug] Loaded engine "Catalyst::Engine::HTTP" [...] [catalyst] [debug] Found home "/home/users/me/MyApp" [...] [catalyst] [debug] Loaded Private actions: .--------------------------------------+---------------------------------------. | Private | Class | +--------------------------------------+---------------------------------------+ | /default | MyApp | '--------------------------------------+---------------------------------------' [...] [catalyst] [info] MyApp powered by Catalyst 5.5 You can connect to your server at http://localhost:3000 (Note that each line logged by Catalyst begins with a timestamp, which has been replaced here with "C<...>" so that the text fits onto the lines.) The server is now waiting for you to make requests of it. Try using telnet to manually make a simple GET request of the server (when telnet responds with "Escape character is '^]'.", type "GET / HTTP/1.0" and hit return twice): $ telnet localhost 3000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.0 200 OK Date: Mon, 07 Nov 2005 14:57:39 GMT Content-Length: 5525 Content-Type: text/html; charset=utf-8 Status: 200 X-Catalyst: 5.5 [...] Connection closed by foreign host. $ You can see the full welcome message by visting http://localhost:3000/ with your browser. More trace messages will appear in the original terminal window: [...] [catalyst] [debug] ********************************** [...] [catalyst] [debug] * Request 1 (0.063/s) [2148] [...] [catalyst] [debug] ********************************** [...] [catalyst] [debug] Arguments are "" [...] [catalyst] [debug] "GET" request for "" from localhost [...] [catalyst] [info] Request took 0.046883s (21.330/s) .------------------------------------------------------------------+-----------. | Action | Time | +------------------------------------------------------------------+-----------+ | /default | 0.000000s | '------------------------------------------------------------------+-----------' The server will continue running until you interrupt it. The application can also be tested from the command line using the generated helper script, C