package Math::IntegerDivision; use Carp; use Moose; has 'numerator' => ( is => 'rw', isa => 'Int' ); has 'denominator' => ( is => 'rw', isa => 'Int' ); sub divide { my ( $self ) = @_; unless( $self->denominator ) { carp("Division by Zero"); return; } my $answer = ( $self->numerator - $self->numerator % $self->denominator ) / $self->denominator; # When only one is negative, the result is out by one # when it's not a perfect divisor. return (( $self->numerator < 0 ^ $self->denominator < 0 ) && ( $self->numerator % $self->denominator )) ? $answer + 1 : $answer; } 1;