package Class::CGI::Customer; use strict; use warnings; use Example::Customer; sub new { my ( $class, $cgi, $param ) = @_; my $value = $cgi->raw_param($param); if ( defined $value ) { unless ( $value && $value =~ /^\d+$/ ) { die "Invalid id ($value) for $class"; } return Example::Customer->new($value) || die "Could not find customer for ($value)"; } else { my $first = $cgi->raw_param('first'); my $last = $cgi->raw_param('last'); # pretend we validated and untainted here :) return Example::Customer->new->first($first)->last($last); } } 1;