Take the 2-minute tour ×

Is there any standard way to use integers of arbitrary length in Perl? I am working on code that generates x64 assembly for tests, and I'm tired of manipulating 32 bits at a time.

I'm using Perl 5.10.0, for what it's worth.

share|improve this question
add comment

2 Answers

up vote 10 down vote accepted

If you only want to use big integers, you can use the bigint, which you can scope to a file:

 use bigint;

or just a limited scope:

 use bigint;

If you need big floating point numbers as well as big integers, you can use the bignum pragma in the same way. Either way, these will slow down your program slightly (or significantly if you are doing a lot of math), so you should only use them for the parts where you really need them. However, faster isn't better than correct. :)

If you want very precise control over which numbers use the big* math, you can use the underlying classes that implement them and create objects yourself rather than applying the big* semantics to everything. Look that Math::Big* modules.

I talk about this more in the Benchmarking chapter of Mastering Perl since computers are too fast nowadays to use a factorial as a slow function, and we also added a section on big numbers it to the upcoming Effective Perl Programming, 2nd Edition.

share|improve this answer
add comment

use Math::BigInt

share|improve this answer
and possibly use bigint; which makes every numeric literal in its scope a BigInt without Math::BigInt->new. Use with care, of course. –  hobbs Jan 24 '10 at 11:05
Or use bignum;, which extends bigint with BigFloat. –  Anonymous Jan 24 '10 at 11:53
add comment

Your Answer


