Body should be an array ref or filehandle: ... #### #!/usr/bin/perl use strict; use Plack::Request; use Plack::Builder; use Plack::App::File; use HTML::Template; my $app = sub{ my $env = shift; my $html = get_html(); my $request = Plack::Request->new($env); if($request->param('file')){ $html = thankyou(); } return ['200', ['Content-Type'=>'text/html'],[$html]]; }; sub get_html{ # open the html template my $template = HTML::Template->new(filename => 'scriptup.html'); return $template->output(); } sub thankyou{ return <Thanks! HTML }