bigint
任意長整数をリテラルに扱える様にする。
Math::BigIntがインストール済みの場合、数値を代入した変数は、Math::BigIntオブジェクトとしてふるまう様になる。
use bigint [{try|lib} => 'GMP'];
パッケージをロードする。
下記のいずれも、$p に任意長整数が代入される。
$p = 1330878501068549726851872940298565698868;
$p = "1330878501068549726851872940298565698868";
$p = hex("D63E1AD3EF38E31C88A7FD556B783A76AE8A181943062F32D");
perlの数値演算は、全て任意長整数で行なわれる。
$pにMath::BigIntのメソッドを適用する事も可能。ref($p)は、"Math::BigInt"を返す。
Math::BigIntオブジェクトなので、文字列として解釈される文脈では、10進表記した任意長整数が出力される。
但し、不用意に使うと思いがけない結果になる。例えば、除算は全て整数除算になる。
他のパッケージに変数を渡して外部出力(例えばHTTP出力)する場合、他のパッケージが変数を文字列として扱うとは限らないので、意図した値が出力されない場合がある。
明示的にMath::BigIntオブジェクトを作って、他のパッケージに渡す場合は明示的に文字列に変換した方がトラブルは少ないだろう。