#!/usr/bin/perl use strict; use warnings; use Plack::Request; use Plack::Response; my $greeting = sub { return [ '200', [ 'Content-Type' => 'text/html' ], [ "

Congratulations! Your answer is correct!

"], ]; }; my $form_validator = sub { my $env = shift; # PSGI env my $request = Plack::Request->new($env); # new Plack::Request my $taste = $request->param('taste'); if ($taste eq 'sour') { return $greeting->($env); } else { my $response = $request->new_response(200);; # new Plack::Response $response->headers({ 'Content-Type' => 'text/html' }); $response->content('

Wrong answer!

' ); return $response->finalize; } }; my $form = sub { return [ 200, ['Content-Type' => 'text/html'], ["
Taste of Vinegar
"] ]; }; my %routing = ( '/submit' => $form_validator, '/' => $form, ); my $app = sub { my $env = shift; # PSGI env my $request = Plack::Request->new($env); my $route = $routing{$request->path_info}; if ($route) {return $route->($env);} else { return [ '404', [ 'Content-Type' => 'text/html' ], [ '404 Not Found' ], ]; } };