=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.pl My::App created "My-App" created "My-App/script" created "My-App/lib" created "My-App/root" created "My-App/t" created "My-App/t/m" created "My-App/t/v" created "My-App/t/c" created "My-App/lib/My/App" created "My-App/lib/My/App/M" created "My-App/lib/My/App/V" created "My-App/lib/My/App/C" created "My-App/lib/My/App.pm" created "My-App/Makefile.PL" created "My-App/README" created "My-App/Changes" created "My-App/t/01app.t" created "My-App/t/02podcoverage.t" created "My-App/script/cgi.pl" created "My-App/script/nph-cgi.pl" created "My-App/script/fcgi.pl" created "My-App/script/server.pl" created "My-App/script/test.pl" created "My-App/script/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 My-App $ script/server.pl [...] [catalyst] [debug] Debug messages enabled [...] [catalyst] [debug] Loaded engine "Catalyst::Engine::HTTP" [...] [catalyst] [debug] Loaded private actions .=----------------------+----------------------+---------------=. | Private | Class | Code | |=----------------------+----------------------+---------------=| | /default | MyApp | CODE(0x86f08ac)| '=----------------------+----------------------+---------------=' "My::App" defined "!default" as "CODE(0x83fd570)" [...] [catalyst] [info] My::App powered by Catalyst 5.00 You can connect to your server at http://localhost:3000 (Note that each line logged by Catalyst includes 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 Server: Catalyst/5.00 Status: 200 Date: Sun, 20 Mar 2005 12:31:55 GMT X-catalyst: 5.00 Content-length: 40 Content-Type: text/html; charset=ISO-8859-1 Congratulations, My::App is on Catalyst! Connection closed by foreign host. $ More trace messages will appear in the original terminal window: [...] [catalyst] [debug] ******************************** [...] [catalyst] [debug] * Request 1 (0.027/s) [9818] [...] [catalyst] [debug] ******************************** [...] [catalyst] [debug] "GET" request for "" from localhost [...] [catalyst] [info] Request took 0.051399s (19.456/s) .=--------------------------------------------------+----------=. | Action | Time | |=--------------------------------------------------+----------=| | /default | 0.000026s | '=--------------------------------------------------+----------=' 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