sub foo { my $self = shift; my $obj = $self->init; #do foo kinda stuff with $obj } sub init { my $self = shift; $self->query->param('id'); if (!$id) {return $self->get_id();} my $obj = $self->get_obj($id); return($obj); }