#!/usr/bin/perl -- use strict; use warnings; use CGI::Application; use CGI::FormBuilder; Main( @ARGV ); exit( 0 ); sub Main { MyAppname->new->run; } BEGIN { package MyAppname; use parent 'CGI::Application'; use CGI::Application::Plugin::AutoRunmode; use CGI::Application::Plugin::DebugScreen; sub What : Runmode { CGI::FormBuilder->new->render; } sub Edit : Runmode { ... } sub View: StartRunmode { my ( $cgiapp ) = @_; my $form = CGI::FormBuilder->new( method => 'post', fields => [qw( one two three )], params => $cgiapp->query, # get CGI params ); if ($form->submitted && $form->validate) { # you don't print in CGI::Application return $form->confirm; } else { return $form->render; } } }