I agree wholeheartedly about Roman. It is indicative of the beauty of CPAN. And the perfect example of why to look there before leaping at any problem.
In my roguelike game Tapestry, you can create characters from a template, they are named Fred, Fred II, Fred III, etc. I had written roman numeral translators in the past (I had once implemented LISP's format stuff into C and C++) and they are a big pain in the neck. So I look on CPAN and read,install,integrate... problem solved.