sub do_stuff { my ($self, $session, $cgi) = @_; croak 'Session not optional' unless $session; $cgi ||= CGI->new(); ... }