The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mason::Manual::Intro - Getting started with Mason

DESCRIPTION

A few quick examples to get your feet wet with Mason. See Mason::Manual::Setup for how to use Mason to generate web sites.

EXAMPLE 1

Hello world (from command-line)

After installing Mason, you should have a mason command in your installation path (e.g. /usr/local/bin). Try this:

    % mason
    Hello! The local time is <% scalar(localtime) %>.
    ^D

(where '^D' means ctrl-D or EOF). You should see something like

    Hello! The local time is Wed Mar  2 17:11:54 2011.

The mason command reads in a Mason component (template), runs it, and prints the result to standard output. Notice that the tag

    <% scalar(localtime) %>

was replaced with the value of its expression. This is called a substitution tag and is a central piece of Mason syntax.

EXAMPLE 2

Email generator (from script)

The command line is good for trying quick things, but eventually you're going to want to put your Mason components in files.

In a test directory, create a directory comps and create a file email.mc with the following:

    <%class>
    has 'amount';
    has 'name';
    </%class>

    Dear <% $.name %>,

        We are pleased to inform you that you have won $<% sprintf("%.2f", $.amount) %>!

    Sincerely,
    The Lottery Commission

    <%init>
    die "amount must be a positive value!" unless $.amount > 0;
    </%init>

In addition to the substitution tag we've seen before, we declare two attributes, amount and name, to be passed into the component; and we declare a piece of initialization code to validate the amount.

In the same test directory, create a script test.pl with the following:

     1  #!/usr/local/bin/perl
     2  use Mason;
     3  my $interp = Mason->new(comp_root => 'comps', data_dir => 'data');
     4  print $interp->run('/email', name => 'Joe', amount => '1500')->output;

Line 3 creates a Mason interpreter, the main Mason object. It specifies two parameters: a component root, indicating the directory hierarchy where your components will live; and a data directory, which Mason will use for internal purposes such as class generation and caching.

Line 4 runs the template - notice that the .mc extension is added automatically - passing values for the name and amount attributes.

Run test.pl, and you should see

    Dear Joe,

        We are pleased to inform you that you have won $1500.00!

    Sincerely,
    The Lottery Commission

SEE ALSO

Mason::Manual::Tutorial, Mason::Manual

AUTHOR

Jonathan Swartz <swartz@pobox.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Jonathan Swartz.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.