summaryrefslogtreecommitdiff
path: root/lib/bigrat.pm
diff options
context:
space:
mode:
authorSteve Peters <steve@fisharerojo.org>2007-05-08 14:36:47 +0000
committerSteve Peters <steve@fisharerojo.org>2007-05-08 14:36:47 +0000
commitbd49aa0990860b27ed774e78523caa0fd4824ceb (patch)
tree1e3f2104586a96277e9bc486f170410ea1f77a08 /lib/bigrat.pm
parente3b7d412e225646739735ee08e98041e0278f7bf (diff)
downloadperl-bd49aa0990860b27ed774e78523caa0fd4824ceb.tar.gz
Upgrage to bignum-0.21 and Math-BigRat-0.19
p4raw-id: //depot/perl@31169
Diffstat (limited to 'lib/bigrat.pm')
-rw-r--r--lib/bigrat.pm21
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/bigrat.pm b/lib/bigrat.pm
index f326e23316..a7a2c437b4 100644
--- a/lib/bigrat.pm
+++ b/lib/bigrat.pm
@@ -1,7 +1,7 @@
package bigrat;
use 5.006002;
-$VERSION = '0.09';
+$VERSION = '0.10';
require Exporter;
@ISA = qw( Exporter );
@EXPORT_OK = qw( );
@@ -80,7 +80,7 @@ sub import
# see also bignum->import() for additional comments
# some defaults
- my $lib = ''; my $upgrade = 'Math::BigFloat';
+ my $lib = ''; my $lib_kind = 'try'; my $upgrade = 'Math::BigFloat';
my @import = ( ':constant' ); # drive it w/ constant
my @a = @_; my $l = scalar @_; my $j = 0;
@@ -95,9 +95,10 @@ sub import
my $s = 2; $s = 1 if @a-$j < 2; # avoid "can not modify non-existant..."
splice @a, $j, $s; $j -= $s;
}
- elsif ($_[$i] =~ /^(l|lib)$/)
+ elsif ($_[$i] =~ /^(l|lib|try|only)$/)
{
# this causes a different low lib to take care...
+ $lib_kind = $1; $lib_kind = 'lib' if $lib_kind eq 'l';
$lib = $_[$i+1] || '';
my $s = 2; $s = 1 if @a-$j < 2; # avoid "can not modify non-existant..."
splice @a, $j, $s; $j -= $s; $i++;
@@ -152,7 +153,7 @@ sub import
require Math::BigInt if $_lite == 0; # not already loaded?
$class = 'Math::BigInt'; # regardless of MBIL or not
}
- push @import, 'lib' => $lib if $lib ne '';
+ push @import, $lib_kind => $lib if $lib ne '';
# Math::BigInt::Trace or plain Math::BigInt
$class->import(@import, upgrade => $upgrade);
@@ -229,13 +230,23 @@ Math::BigInt::Calc. This is equivalent to saying:
You can change this by using:
- use bigrat lib => 'BitVect';
+ use bignum lib => 'GMP';
The following would first try to find Math::BigInt::Foo, then
Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
use bigrat lib => 'Foo,Math::BigInt::Bar';
+Using C<lib> warns if none of the specified libraries can be found and
+L<Math::BigInt> did fall back to one of the default libraries.
+To supress this warning, use C<try> instead:
+
+ use bignum try => 'GMP';
+
+If you want the code to die instead of falling back, use C<only> instead:
+
+ use bignum only => 'GMP';
+
Please see respective module documentation for further details.
=head2 Sign