Q:

How can I disable scientific notation when working with very large numbers in Perl? 

Consider the following:
print 3 ** 333; #Yields 7.6098802313206e+158

My question is simple: How can I disable scientific notation when working with very large numbers?  Basically, I'd like to see all the digits dumped to stdout verbatim. 
Is this possible? 

A:

See Math::BigInt
use Math::BigInt;
$x = Math::BigInt->new("3");
print $x ** 333;

Output:
760988023132059809720425867265032780727896356372077865117010037035791631439306199613044145649378522557935351570949952010001833769302566531786879537190794573523

A:

If you want to do it for all integers in your program, you can just add:
use bigint;

If you only want to do it for some integers, you can create Math::BigInt objects. 
There is also bignum and Math::BigNum if you are working with floats. 

A:

For very small values see the following code:
my $value = 1e-07;                 # = 0.0000001

# NOPE

print $value;                      # prints 1e-07, $value is a number
print sprintf("%f", $value);       # prints 0, $value is a number
print sprintf("%.10f", $value);    # prints 0.0000001000, $value is a number
$value = sprintf("%.10f", $value);
print $value                       # prints 1e-07, $value is a number

# /NOPE

use bignum;
$value = ($value+0)->bstr();
print $value;                      # prints 0.0000001, $value is a string
no bignum;
print $value;                      # prints 0.0000001, $value is a string

# HOORAY

