Convert english text to numbers
use Lingua::EN::Words2Nums; $num=words2nums("two thousand and one"); $num=words2nums("twenty-second"); $num=words2nums("15 billion, 6 million, and ninteen");
This module converts English text into numbers. It supports both ordinal and cardinal numbers, negative numbers, and very large numbers.
The main subroutine, which is exported by default, is words2nums(). This subroutine, when fed a string, will attempt to convert it into a number. If it succeeds, the number will be returned. If it fails, it returns undef.
There are a number of variables that can be used to tweak the behavior of this module. For example, debugging can be be enabled by setting $Lingua::EN::Words2Nums::debug=1 Default: 0. If set to a true value, outputs on standard error some useful messages if parsing fails for some reason. Default: 10 ** 9. This is the number that will be returned for \*(L"one billion\*(R". It defaults to the American version; the English will want to set it to 10 ** 12. Setting this number automatically changes all the larger numbers (trillion, quadrillion, etc) to match.
It does not understand decimals or fractions, yet.
Scores are supported, eg: \*(L"four score and ten\*(R". So are dozens. So is a baker's dozen. And a gross.
Various mispellings of numbers are understood.
While it handles googol correctly, googolplex is too large to fit in perl's standard scalar type, and \*(L"inf\*(R" will be returned.
Copyright 2001-2003 Joey Hess <[email protected]>
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.