The "legacy" way to create a Word document would be using Win32::OLE in order to drive word to produce your document. This would work only on Win32. Choosing this solution, I would make a template document containing tags which I would "search&replace" with my datas.
An other solution (linux friendly) would be to use RTF::Document which allows some bells and whistles without Word (same proposed solution applies also here).
My two favorites:
If the only tool you have is a hammer, you will see every problem as a nail. --Abraham Maslow
Bien faire, et le faire savoir...