when i search cpan, i found Win32::OLE(and there are many more in https://metacpan.org/) can read doc file($wd = Win32::OLE->GetObject("D:\\Data\\Message.doc");), but my debian box is not supported by Win32::OLE. there is an example read doc file and put it content in a plain text file using-perl-to-read-microsoft-word-documents .
maybe you can use this module read doc file and then put word in the porper position in the html file. when you write the html file, use template module can ease you work, such as HTML::Template