use Lingua::EN::Numbers qw(num2en); while () { s/(\d+)/num2en $1/eg; print; } __DATA__ Too Small: 7 and 5. Too Big: 123345 Just right: 51