$henry->attack($joe); $joe->attack($henry); sub attack { my ($self,$target) = @_; ... # compare dex/abilities to see if you hit the target if ( $hit ) { ... # compute damage from the attack $target->damage( $amount, $self ); ... # emit messages about the attack } else { ... # emit messages about a miss } } sub damage { my ($self, $amount, $attacker) = @_; ... # adjust amount for armour, etc. $self->{_hp} -= $amount; # this assumes the object is a hashref # this may not be the case ... see 'perldoc perltoot' if ( $self->{_hp} <= 0 ) { ... # whatever to do for death } }