#!/usr/bin/env perl use warnings; use strict; use Plack::Builder; use Plack::Request; use Template; use JSON; # Global "DB." my %groups = ( sherk => [qw/ Whale Mako White Banjo /], moo => [qw/ Ankole Gaur Piedmontese /] ); # Reusable template engine object. my $tt2 = Template->new; # Reusable template in plain variable.. my $template = do { local $/; }; my $html = sub { $tt2->process( \$template, { groups => \%groups }, \my $out); # This is a psgi response, status, headers, body. [ 200, [ "Content-Type" => "text/html" ], [ $out ] ]; }; my $ajax_server = sub { my $req = Plack::Request->new(shift); my $group = $groups{ $req->param("group") }; die "Some kinda error, no such group\n" unless $group; [ 200, [ "Content-Type" => "application/json" ], [ encode_json({ result => $group }) ] ]; }; builder { mount "/ajax-groups" => $ajax_server; mount "/" => $html; }; __DATA__ OHAI [% FOR group IN groups.keys.sort %] [% END %]
Group: [% group %] ...
Group: Bad group ...