sub respond { my $self = shift; warn Dumper $self; return $self unless $self =~ /Validate$/; warn 'checking results'; my $results = Data::FormValidator->check( $self->CGI, $self->dfv_profile ); warn Dumper $results; my $response_page; if ( $results->has_missing() || $results->has_invalid() ) { # There was something wrong w/ the data... $self->reflect->addSlots( results => $results ); $response_page = $self->redo_page } else { $response_page = $self->confirm_page } Class::Autouse->autouse($response_page); return $response_page; } ### and now the class that we subclass on the above... package Gimble::Page::Login::Validate; use base qw(Gimble::Page::Base); use Class::Autouse; use Data::Dumper; sub respond_enter { my $self = shift; $self->reflect->addSlots( redo_page => 'Gimble::Page::Login::Redo', confirm_page => 'Gimble::Page::Login::Confirm', dfv_profile => { msgs => { format => '%s' }, required => [ qw(login_name password) ], } ) }