How can I convert a number to its English form in Perl?
-
26-09-2019 - |
Question
I need a Perl script which takes numbers as input example 222 and it should output as two hundred twenty two.
Solution
Use Lingua::EN::Numbers - turn "407" into "four hundred and seven", etc.
use Lingua::EN::Numbers qw(num2en num2en_ordinal);
my $x = 234;
my $y = 54;
print "You have ", num2en($x), " things to do today!\n";
print "You will stop caring after the ", num2en_ordinal($y), ".\n";
prints:
You have two hundred and thirty-four things to do today!
You will stop caring after the fifty-fourth.
If you read the documentation of the module then you will find that the module also support the following things like,
- It can handle integers like "12" or "-3" and real numbers like "53.19".
- It also understands exponential notation -- it turns "4E9" into "four times ten to the ninth.
- It turns "INF", "-INF", "NaN" into "infinity", "negative infinity", and "not a number", respectively.
OTHER TIPS
Number::Spell can help you:
use Number::Spell;
my $str = spell_number(222);
Here is one:
Description: This basically converts a number into words. It can only convert numbers less than or equal of novemdecillion quantity. It has a complete input validation process.
Try this. From the author...
You can use this freely and modify it however you want.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow