Well... I found Lingua::EN::Numbers::Ordinate in CPAN which doesn't do exactly what you want, but might help you solving your problem.
update: I just couldn't believe that there wasn't a module that did what you want, so I kept searching and just found Lingua::EN::Nums2Words which does exactly what you want.