Question

I need a Perl script which takes numbers as input example 222 and it should output as two hundred twenty two.

Was it helpful?

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
scroll top