NAME
Lingua::FR::Numbers - Converts numeric values into their French string equivalents
SYNOPSIS
# Procedural Style
use Lingua::FR::Numbers qw(number_to_fr ordinate_to_fr);
print number_to_fr( 345 );
my $vingt = ordinate_to_fr( 20 );
print "Tintin est reporter au petit $vingt";
# OO Style
use Lingua::FR::Numbers;
my $number = Lingua::FR::Numbers->new( 123 );
print $number->get_string;
print $number->get_ordinate;
my $other_number = Lingua::FR::Numbers->new;
$other_number->parse( 7340 );
$french_string = $other_number->get_string;
DESCRIPTION
This module converts a number into a French cardinal or ordinal. It supports decimal numbers, but this feature is experimental.
The interface tries to conform to the one defined in Lingua::EN::Number, though this module does not provide any parse() method. Also, unlike Lingua::En::Numbers, you can use this module in a procedural manner by importing the number_to_fr() function.
If you plan to use this module with greater numbers (>10e20), you can use the Math::BigInt module:
use Math::BigInt;
use Lingua::FR::Numbers qw( number_to_fr );
my $big_num = new Math::BigInt '1.23e68';
print number_to_fr($big_num);
# cent vingt-trois quintillions de sextillions
This module should output strings for numbers up to, but not including, 1e75, but due to a lack of documentation in French grammar, it can only reliably output strings for numbers lower than 1e51. For example, 1e72 is 'un sextillion de sextillion', but I am unable to say 1e51 or 1e69, at least for now.
VARIABLES
FUNCTION-ORIENTED INTERFACE
number_to_fr( $number )
use Lingua::FR::Numbers qw(number_to_fr);
my $depth = number_to_fr( 20_000 );
my $year = number_to_fr( 1870 );
print "Jules Vernes écrivit $depth lieues sous les mers en $year.";
This function can be exported by the module.
ordinate_to_fr( $number )
use Lingua::FR::Numbers qw(ordinate_to_fr);
my $twenty = ordinate_to_fr( 20 );
print "Tintin est reporter au petit $twenty";
This function can be exported by the module.
OBJECT-ORIENTED INTERFACE
new( [ $number ] )
my $start = Lingua::FR::Numbers->new( 500 );
my $end = Lingua::FR::Numbers->new( 3000 );
print "Nous partîmes ", $start->get_string,
"; mais par un prompt renfort\n",
"Nous nous vîmes ", $end->get_string," en arrivant au port"
Creates and initializes a new instance of an object.
parse( $number )
Initializes (or reinitializes) the instance.
get_string()
my $string = $number->get_string;
Returns the number as a formatted string in French, lowercased.
get_ordinate()
my $string = $number->get_ordinate;
Returns the ordinal representation of the number as a formatted string in French, lowercased.
DIAGNOSTICS
Invalid number format: '$number'
(W) The number specified is not in a valid numeric format.
Number '$number' too big to be represented as string
(W) The number is too big to be converted into a string. Numbers
must be lower than 1e75-1.
SOURCE
Le français correct - Maurice GREVISSE
Décret n° 61-501 du 3 mai 1961. relatif aux unités de mesure et au contrôle des instruments de mesure. - http://www.adminet.com/jo/dec61-501.html
BUGS
Though the module should be able to convert big numbers (up to 10**36), I do not know how Perl handles them.
Please report any bugs or comments using the Request Tracker
COPYRIGHT
Copyright 2002, Briac Pilpré. All Rights Reserved. This module can be redistributed under the same terms as Perl itself.
AUTHOR
Briac Pilpré <briac@cpan.org>
SEE ALSO
Lingua::EN::Numbers, Lingua::Word2Num