Have you just killed the messenger? That is, perhaps deleting #! perl -w just turns off warning messages? At least that's what I find on MY w2k system.
(And I'm still in the dark about
Constant subroutine emptyenum redefined at C:/Perl/site/lib/Win32/OLE/Const.pm line -1, <DATA> line 183 )
As for being in the dark about that message, I already told you what it means. It means that emptyenum was defined twice (probably in different modules and then exported to the same one). If the two values are the same, then the error is harmless. If the values are different, you have a real problem. (It probably is harmless.)
I'd personally start tracking the error down by looking at C:/Perl/site/lib/Win32/OLE/Const.pm.
The warnings do seem to be harmless because my program is creating the Word documents that I want via templates. My problems are:
1. I'd like to be positive these messages are harmless and won't cause me problems if I leave them alone.
2. If harmless, I'd be okay with turning off warnings before/after Const invocation but the documentation about them seems to say that these errors are so important that they can't be muted. Of course I could temporarily send errors to /dev/null but that seems like asking for trouble later on.
3. Is it possible to fix the problems that are causing the warnings?
While you did say that emptyenum was being run more than once, that didn't do much for me because I couldn't see anywhere where it WAS being run. I couldn't find it in Const.pm nor in my own code. However, I did pull out my handy-dandy OLE browser that comes with ActiveState's perl and noticed that
# Type Library Browser for wdCharacterCaseHID shows emptyenum
Now there's zillions of little pieces of stuff that is investigatable (?) about MS Word with that tool and it was mostly a shot in the dark that elicited that nugget. But not a total shot, as relevant lines from my code include:
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';
my $x = Win32::OLE->GetActiveObject('Word.Application');
# The above is my kiddy-scripted version of some VisualBasic that I
# came upon: Selection.Delete Unit:=wdCharacter, Count:=1
and in this case cluck's output seems to properly notify that the Const.pm module was being invoked from line 1027 of out_subs.pl (the line with the <Microsoft Outlook> string). The fact of no complaints from the Outlook stuff would seem to say that emptyenum is being used strangely within Word....