sub update { my %args = @_; my @messages = (); my @errors = validate_args( %args ); if (@errors) { # package the errors up as error messages @messages = map {{ class => 'error', data => $_ }} @errors; # override landing page back to update so user can fix errors # $comp is set to 'list' prior to this method call $comp = 'update'; } else { my $sth = $dbh->prepare(' UPDATE thingy SET foo = ?, bar = ? WHERE id = 1 '); $sth->execute( $args{foo}, $args{bar}, ); push( @messages, { class => 'message', data => 'Thingy successfully updated.' } ); } return @messages; }