sub doit { my( $self, $a, $b ) = @_; die unless $self =~ __PACKAGE__ and look_likenumber( $a ) and looks_like_number( $b ); ## do some stuff before $self->{thing} += $a; $self->{thing} *= $b; ## do some stuff after return $self->{thing}; }