diff options
author | Kevin Ryde <user42@zip.com.au> | 2001-08-16 23:27:01 +0200 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2001-08-16 23:27:01 +0200 |
commit | aa9c7988eba9546e57d7f676c9b1d97043c521bf (patch) | |
tree | 85f25bca2480982dd455efb3724b046531d3aebe /demos/perl | |
parent | 449452dc476e95e3a6241a7c76b5747c969e76d3 (diff) | |
download | gmp-aa9c7988eba9546e57d7f676c9b1d97043c521bf.tar.gz |
* demos/perl/GMP.xs, GMP/Mpf.pm: Remove separate mpf_get_str.
* demos/perl/GMP/Mpf.pm (overload_string): Use $# (default "%.g").
Diffstat (limited to 'demos/perl')
-rw-r--r-- | demos/perl/GMP/Mpf.pm | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/demos/perl/GMP/Mpf.pm b/demos/perl/GMP/Mpf.pm index 849955178..76246ea33 100644 --- a/demos/perl/GMP/Mpf.pm +++ b/demos/perl/GMP/Mpf.pm @@ -29,8 +29,7 @@ require Exporter; @EXPORT_OK = qw(); %EXPORT_TAGS = ('all' => [qw( ceil floor get_default_prec get_prec mpf mpf_eq - mpf_get_str reldiff set_default_prec set_prec - trunc)], + reldiff set_default_prec set_prec trunc)], 'constants' => [@EXPORT], 'noconstants' => [@EXPORT]); Exporter::export_ok_tags('all'); @@ -73,8 +72,23 @@ sub import { sub overload_string { - my ($str, $exp) = mpf_get_str($_[0], 10, 0); - return GMP::mpf_get_str_convert (10, $str, $exp); + my $fmt; + { + # don't whinge about $# being deprecated + local $^W = 0; + $fmt = $#; + } + if (! defined $fmt) { + $fmt = '%.Fg'; + } else { + # protect against calling sprintf_internal with a bad format + if ($# !~ /^(%%|[^%])*%[-+ .\d]*[eEfgG](%%|[^%])*$/) { + die "GMP::Mpf: invalid \$# format: $#\n"; + } + $fmt = $OFMT; + $fmt =~ s/(.)$/F$1/; + } + GMP::sprintf_internal ($fmt, $_[0]); } 1; |