Subject: | Can't use an undefined value as an ARRAY reference at Math/BigInt/Calc.pm line 1259 |
You can find the node on perlmonks that I started about this at http://perlmonks.org/?node_id=1103151
I've come across an issue in some test code which I've reduced down. This initially came about because one test module used Math::FixedPrecision and another test module used bignum. The two were not used together until a new test was written which needed both and then stringifcation of Math::FixedPrecision started failing with <i>Can't use an undefined value as an ARRAY reference</i>.
The reduced version is just to simplify the problem, it serves no useful purpose. I also don't understand why "no bignum" does not fix the issue. This works:
use strict;
use warnings;
use Data::Dumper;
{
require Math::FixedPrecision;
my $one = Math::FixedPrecision->new('2', 2);
print Dumper($one);
print Dumper("$one");
}
outputting
$VAR1 = bless( {
'_m' => [
2
],
'_es' => '+',
'_p' => -2,
'_e' => [
0
],
'sign' => '+'
}, 'Math::FixedPrecision' );
$VAR1 = '2.00';
and this does not work
use strict;
use warnings;
use bignum;
use Data::Dumper;
{
no bignum;
require Math::FixedPrecision;
my $one = Math::FixedPrecision->new('2', 2);
print Dumper($one);
print Dumper("$one");
}
outputting
$VAR1 = bless( {
'value' => [
2
],
'_p' => -2,
'sign' => '+'
}, 'Math::FixedPrecision' );
Can't use an undefined value as an ARRAY reference at /home/perlbrew/perls/perl-5.16.0/lib/5.16.0/Math/BigInt/Calc.pm line 1259.
Notice the lack of a mantissa in the second case which is actually what causes the final error in Math::BigInt::Calc.
I read the following from bignum pod:
The entire upgrading/downgrading is still experimental and might not work as you expect or may even have bugs. You might get errors like this: Can't use an undefined value as an ARRAY reference at /usr/local/lib/perl5/5.8.0/Math/BigInt/Calc.pm line 864 This means somewhere a routine got a BigFloat/Lite but expected a BigInt (or vice versa) and the upgrade/downgrad path was missing. This is a bug, please report it so that we can fix it.
I have:
bignum 0.37
Math::BigFloat 1.9991
Math::BigInt 1.9993
Martin
--
Martin J. Evans
Wetherby, UK