in reply to Win32::OLE and Word

The error seems to indicate that the $Word object was never created, and maybe LastError() from Win32::OLE would tell you what is wrong there. Looking at the Win32::OLE::Const docs, your code doesn't look right, it should probably be:
use Win32::OLE; use Win32::OLE::Const; my $Word = Win32::OLE->new('Word.Application'); my $wd = Win32::OLE::Const->Load($Word);
But you never use any of the constants, it looks like you are creating them manually with "use constant ..." instead (and I don't know if those are the correct constants or if they differ on different systems), but maybe you should use the $wd hashref to get at the constants instead.