If you take a look at
Math::BigInt, you will find that the method bdiv in list context returns quotient and remainder.
SYNOPSIS
use Math::BigInt;
$i = Math::BigInt->new($string);
$i->bneg return BINT negation
$i->babs return BINT absolute value
$i->bcmp(BINT) return CODE compare numbers (undef,<0,=0,>0)
$i->badd(BINT) return BINT addition
$i->bsub(BINT) return BINT subtraction
$i->bmul(BINT) return BINT multiplication
$i->bdiv(BINT) return (BINT,BINT) division (quo,rem) just quo if sc
+alar
$i->bmod(BINT) return BINT modulus
$i->bgcd(BINT) return BINT greatest common divisor
$i->bnorm return BINT normalization
$i->blsft(BINT) return BINT left shift
$i->brsft(BINT) return (BINT,BINT) right shift (quo,rem) just quo if
+ scalar
$i->band(BINT) return BINT bit-wise and
$i->bior(BINT) return BINT bit-wise inclusive or
$i->bxor(BINT) return BINT bit-wise exclusive or
$i->bnot return BINT bit-wise not
Although it's a bit slow and clunky, Math::BigInt's overload mechanism makes a good attempt at a drop-in replacement for n bit integers.